When I heard that Apple was competing with Surface Pro I went looking for the only feature of the Surface Pro that I wanted in Apple's new tablet: side loading.
It looks like Apple has dropped the $99 a year for not even necessarily selling anything on the App Store requirement. It's not exactly side-loading, because end users would still have to build the VM from C sources in Xcode before installing it, but it's something.
The upshot is, since we can't ship via app-store, we can do a source distribution and get around the stupid App Store rules that hate us so. Thus, we don't have to rely on weird flaky crap like jailbreaks or have a guy paying for a dev account out of the goodness of his heart to distribute test keys for the system to those brave enough to run it without a proper touch interface.
I may buy another iPad yet.
Guessing most people familiar with the sitch are probably up to date, but for anyone who missed this detail, Casey to the rescue.
http://9to5mac.com/2015/06/10/xcode-7-allows-anyone-to-download-build-and-s…
Changes to Trunk (http://source.squeak.org/trunk.html) in the last 24 hours:
http://lists.squeakfoundation.org/pipermail/packages/2015-October/009082.ht…
Name: MorphicExtrasTests-nice.4
Ancestors: MorphicExtrasTests-fbs.3
Do not use at:put: on a Float (especially a literal!), this superpower should be considered harmful and it is not 64-bits spur compatible anyway.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-October/009083.ht…
Name: Compiler-nice.316
Ancestors: Compiler-cmm.315
Make markerOrNil 64bits spur compatible by not hardcoding wordSize.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-October/009084.ht…
Name: CollectionsTests-nice.255
Ancestors: CollectionsTests-ul.254
In a 64bits spur VM, not all SmallInteger can be stored in an IntegerArray, It's time to document it.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-October/009085.ht…
Name: KernelTests-nice.298
Ancestors: KernelTests-eem.297
Revise the tests relative to SmallInteger range for 64bits spur VM compatibility.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-October/009086.ht…
Name: Kernel-nice.962
Ancestors: Kernel-ul.961
Fix DataStream-serialization of SmallInteger in a 64bits spur VM.
DataStream assumes each and every SmallInteger fits in 32bits which is no more true.
If the SmallInteger is out of 32bits VM SmallInteger range, then use a fake LargeInteger.
Also care to re-normalize LageIntegers at materialization time.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-October/009087.ht…
Name: System-nice.776
Ancestors: System-topa.775
Fix SmartRefStream for 64bits spur VM.
The scenario is this one: a SmallInteger smaller than 32 bits VM minSmallInteger is being replaced with a fake LargeNegativeInteger.
But the fake LargeNegativeInteger is not stored in references IdentityDictionary; consequently the class is NOT properly registered into the structures, and this creates an Error at materialization time...
So let's reference the fake...
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2015-October/009088.ht…
Name: Kernel-nice.963
Ancestors: Kernel-nice.962
Let's correct my fresh DataStream correction...
The ugly 37777777 pattern may happen in octal, but 50 birthdays is well too young for practicing such sport correctly ;)
<rant>
if the MC commit window would not try and reformat the code (especially rewrite hexadecimal constants in decimal) - that would have given me one more chance to correct before committing...
</rant>
=============================================
Nicolas Cellier uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-nice.963.mcz
==================== Summary ====================
Name: Kernel-nice.963
Author: nice
Time: 31 October 2015, 11:48:47.351 pm
UUID: 251411b2-0110-4d17-8469-5b3aef45ebee
Ancestors: Kernel-nice.962
Let's correct my fresh DataStream correction...
The ugly 37777777 pattern may happen in octal, but 50 birthdays is well too young for practicing such sport correctly ;)
<rant>
if the MC commit window would not try and reformat the code (especially rewrite hexadecimal constants in decimal) - that would have given me one more chance to correct before committing...
</rant>
=============== Diff against Kernel-nice.962 ===============
Item was changed:
----- Method: SmallInteger>>objectForDataStream: (in category 'objects from disk') -----
objectForDataStream: refStrm
"In a 64bits sput VM, we may have to fake 32bits SmallInteger for compatibility"
| large |
+ self > 16r3FFFFFFF ifTrue: [
- self > 16r37777777 ifTrue: [
large := LargePositiveInteger new: self digitLength neg: false.
1 to: self digitLength do: [:i | large digitAt: i put: (self digitAt: i)].
^large].
self < -16r40000000 ifTrue: [
large := LargeNegativeInteger new: self digitLength neg: true.
1 to: self digitLength do: [:i | large digitAt: i put: (self digitAt: i)].
^large].
^ self
!
2015-10-31 19:25 GMT+01:00 <commits(a)source.squeak.org>:
> Nicolas Cellier uploaded a new version of Kernel to project The Trunk:
> http://source.squeak.org/trunk/Kernel-nice.962.mcz
>
> ==================== Summary ====================
>
> Name: Kernel-nice.962
> Author: nice
> Time: 31 October 2015, 7:24:30.118 pm
> UUID: 7437325d-9085-4d61-9960-368cd42f46fe
> Ancestors: Kernel-ul.961
>
> Fix DataStream-serialization of SmallInteger in a 64bits spur VM.
>
> DataStream assumes each and every SmallInteger fits in 32bits which is no
> more true.
> If the SmallInteger is out of 32bits VM SmallInteger range, then use a
> fake LargeInteger.
> Also care to re-normalize LageIntegers at materialization time.
>
> =============== Diff against Kernel-ul.961 ===============
>
> Item was added:
> + ----- Method: LargePositiveInteger>>readDataFrom:size: (in category
> 'objects from disk') -----
> + readDataFrom: aDataStream size: varsOnDisk
> + ^(super readDataFrom: aDataStream size: varsOnDisk) normalize
> + !
>
> Item was added:
> + ----- Method: SmallInteger>>objectForDataStream: (in category 'objects
> from disk') -----
> + objectForDataStream: refStrm
> + "In a 64bits sput VM, we may have to fake 32bits SmallInteger for
> compatibility"
> +
> + | large |
> + self > 16r37777777 ifTrue: [
>
Ahem, err...
what's this 7777777 ???
Probably I was thinking of typing seven F so loud that I fooled myself !!!
Let me retry...
> + large := LargePositiveInteger new: self digitLength neg:
> false.
> + 1 to: self digitLength do: [:i | large digitAt: i put:
> (self digitAt: i)].
> + ^large].
> + self < -16r40000000 ifTrue: [
> + large := LargeNegativeInteger new: self digitLength neg:
> true.
> + 1 to: self digitLength do: [:i | large digitAt: i put:
> (self digitAt: i)].
> + ^large].
> + ^ self
> + !
>
>
>
Nicolas Cellier uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-nice.776.mcz
==================== Summary ====================
Name: System-nice.776
Author: nice
Time: 31 October 2015, 11:35:30.653 pm
UUID: d178a6bb-8b9a-47ed-9eff-8544ba286894
Ancestors: System-topa.775
Fix SmartRefStream for 64bits spur VM.
The scenario is this one: a SmallInteger smaller than 32 bits VM minSmallInteger is being replaced with a fake LargeNegativeInteger.
But the fake LargeNegativeInteger is not stored in references IdentityDictionary; consequently the class is NOT properly registered into the structures, and this creates an Error at materialization time...
So let's reference the fake...
=============== Diff against System-topa.775 ===============
Item was changed:
----- Method: DataStream>>nextPut: (in category 'write and read') -----
nextPut: anObject
"Write anObject to the receiver stream. Answer anObject."
| typeID selector objectToStore |
typeID := self typeIDFor: anObject.
(self tryToPutReference: anObject typeID: typeID)
ifTrue: [^ anObject].
objectToStore := (self objectIfBlocked: anObject) objectForDataStream: self.
+ objectToStore == anObject
+ ifFalse:
+ [typeID := self typeIDFor: objectToStore.
+ (self tryToPutReference: objectToStore typeID: typeID)
+ ifTrue: [^ anObject]].
- objectToStore == anObject ifFalse: [typeID := self typeIDFor: objectToStore].
byteStream nextPut: typeID.
selector := #(writeNil: writeTrue: writeFalse: writeInteger:
writeStringOld: writeSymbol: writeByteArray:
writeArray: writeInstance: errorWriteReference: writeBitmap:
writeClass: writeUser: writeFloat: writeRectangle: == "<-16 short inst"
writeString: writeBitmap: writeBitmap: writeWordLike:
writeInstance: "CompiledMethod") at: typeID.
self perform: selector with: objectToStore.
^ anObject
"NOTE: If anObject is a reference type (one that we write cross-references to) but its externalized form (result of objectForDataStream:) isn't (e.g. CompiledMethod and ViewState), then we should remember its externalized form
but not add to 'references'. Putting that object again should just put its
external form again. That's more compact and avoids seeks when reading.
But we just do the simple thing here, allowing backward-references for
non-reference types like nil. So objectAt: has to compensate. Objects that
externalize nicely won't contain the likes of ViewStates, so this shouldn't
hurt much.
writeReference: -> errorWriteReference:."!
On 31.10.2015, at 17:39, commits(a)source.squeak.org wrote:
> Nicolas Cellier uploaded a new version of CollectionsTests to project The Trunk:
> http://source.squeak.org/trunk/CollectionsTests-nice.255.mcz
>
> ==================== Summary ====================
>
> Name: CollectionsTests-nice.255
> Author: nice
> Time: 31 October 2015, 6:39:25.525 pm
> UUID: 4f5361b3-18c8-47f1-ba59-030004683963
> Ancestors: CollectionsTests-ul.254
>
> In a 64bits spur VM, not all SmallInteger can be stored in an IntegerArray, It's time to document it.
>
Eh…
Shouldn't we rather fix IntegerArray then?
Best
-Tobias
> =============== Diff against CollectionsTests-ul.254 ===============
>
> Item was changed:
Nicolas Cellier uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-nice.962.mcz
==================== Summary ====================
Name: Kernel-nice.962
Author: nice
Time: 31 October 2015, 7:24:30.118 pm
UUID: 7437325d-9085-4d61-9960-368cd42f46fe
Ancestors: Kernel-ul.961
Fix DataStream-serialization of SmallInteger in a 64bits spur VM.
DataStream assumes each and every SmallInteger fits in 32bits which is no more true.
If the SmallInteger is out of 32bits VM SmallInteger range, then use a fake LargeInteger.
Also care to re-normalize LageIntegers at materialization time.
=============== Diff against Kernel-ul.961 ===============
Item was added:
+ ----- Method: LargePositiveInteger>>readDataFrom:size: (in category 'objects from disk') -----
+ readDataFrom: aDataStream size: varsOnDisk
+ ^(super readDataFrom: aDataStream size: varsOnDisk) normalize
+ !
Item was added:
+ ----- Method: SmallInteger>>objectForDataStream: (in category 'objects from disk') -----
+ objectForDataStream: refStrm
+ "In a 64bits sput VM, we may have to fake 32bits SmallInteger for compatibility"
+
+ | large |
+ self > 16r37777777 ifTrue: [
+ large := LargePositiveInteger new: self digitLength neg: false.
+ 1 to: self digitLength do: [:i | large digitAt: i put: (self digitAt: i)].
+ ^large].
+ self < -16r40000000 ifTrue: [
+ large := LargeNegativeInteger new: self digitLength neg: true.
+ 1 to: self digitLength do: [:i | large digitAt: i put: (self digitAt: i)].
+ ^large].
+ ^ self
+ !
Nicolas Cellier uploaded a new version of CollectionsTests to project The Trunk:
http://source.squeak.org/trunk/CollectionsTests-nice.255.mcz
==================== Summary ====================
Name: CollectionsTests-nice.255
Author: nice
Time: 31 October 2015, 6:39:25.525 pm
UUID: 4f5361b3-18c8-47f1-ba59-030004683963
Ancestors: CollectionsTests-ul.254
In a 64bits spur VM, not all SmallInteger can be stored in an IntegerArray, It's time to document it.
=============== Diff against CollectionsTests-ul.254 ===============
Item was changed:
----- Method: IntegerArrayTest>>testStoreSmallInteger (in category 'tests') -----
testStoreSmallInteger
+ "Any SmallInteger may be stored in an IntegerArray in a 32bits VM.
+ Not so true for a 64bits spur VM though..."
- "Any SmallInteger may be stored in an IntegerArray."
| ia val |
ia := IntegerArray new: 1.
+ val := Smalltalk wordSize = 8
+ ifTrue: [1 << 31 - 1]
+ ifFalse: [SmallInteger maxVal].
- val := SmallInteger maxVal.
ia at: 1 put: val.
self assert: ((ia at: 1) = val).
+ val := Smalltalk wordSize = 8
+ ifTrue: [(1 << 31) negated]
+ ifFalse: [SmallInteger minVal].
- val := SmallInteger minVal.
ia at: 1 put: val.
self assert: ((ia at: 1) = val)
!