Planet Squeak Code

blogs about Squeak, Pharo, Croquet and family
planet squeak - planet squeak es - planet squeak jp - planet croquet - planet squeak code - planet smalltalk

May 16, 2019

source.squeak.org

GraphicsTests-nice.53

Add tests for round trip conversion of Color fromString: printHtmlString.

by Nicolas Cellier (nicolas.cellier.aka.nice@gmail.com) at May 16, 2019 06:16 PM

Graphics-nice.408

Use a map rgb->#names rather than iterating thru/performing all known colorNames.

This is especially useful if we intend to add more color names.
Note that names do not need to be unique.
The first appearing name in colorNames will be used.

Color colorNames collect: [:sym | Color perform: sym].

(Color colorNames reject: [:sym | (Color perform: sym) name = sym])
collect: [:sym | sym -> (Color perform: sym) name].

The new class variable is initialized in postscript.
It must be re-initialized each time we change the definition of a named Color.

The rgb code has been used as key rather than the Color itself.
This is because it is unique and cheap (SmallInteger).

by Nicolas Cellier (nicolas.cellier.aka.nice@gmail.com) at May 16, 2019 01:14 PM

Graphics-nice.407

I see that Marcel used something like
https://gist.github.com/haggen/c91ed87700e5971f6fc6

I propose to reduce crayon shades overlapping by adopting different references

blueberry
(Encycolorpedia) https://encycolorpedia.com/4f86f7
(Crayola) https://en.wikipedia.org/wiki/List_of_Crayola_crayon_colors
ice (Corel ice blue) https://en.wikipedia.org/wiki/Shades_of_blue#Ice_blue
lemon
(Encycolorpedia lemon) https://encycolorpedia.com/fff700
(Encycolorpedia lemon yellow) https://en.wikipedia.org/wiki/Lemon_(color)#Lemon_yellow
(Crayola lemon) https://en.wikipedia.org/wiki/Shades_of_yellow#Lemon
licorice (Crayola-Encycolorpedia) https://en.wikipedia.org/wiki/Shades_of_black#Licorice
snow
(Encycolorpedia) https://encycolorpedia.com/fffafa
(X11) https://en.wikipedia.org/wiki/Shades_of_white#Snow
spring (X11 spring green) https://en.wikipedia.org/wiki/Spring_green
turquoise (X11-Encycolorpedia) https://en.wikipedia.org/wiki/Shades_of_cyan#Turquoise

Or should we have sort of factories?
(Color x11 turquoise vs Color macCrayon turquoise)

Of course, it opens some sort of big can:
https://encycolorpedia.com/named
https://en.wikipedia.org/wiki/X11_color_names
https://en.wikipedia.org/wiki/List_of_colors_(compact)

by Nicolas Cellier (nicolas.cellier.aka.nice@gmail.com) at May 16, 2019 11:02 AM

May 15, 2019

source.squeak.org

Kernel-nice.1235

Round accelerated arithmetic chunks to upper multiple of 4 bytes rather than to lower.

I believe that this marginally improves the performance because it's a tiny bit better to recompose a longer least significant chunk with a shorter most significant chunk.

If someone wants to confirm...
It's better to tune the threshold before benchmarking.
See LargeArithmeticBench from http://www.squeaksource.com/STEM.html and http://smallissimo.blogspot.com/2019/05 blog for details.

by Nicolas Cellier (nicolas.cellier.aka.nice@gmail.com) at May 15, 2019 10:08 PM

ToolsTests-pre.92

Yet another "repair" of the dependency browser tests.

by Patrick Rein (patrick.rein@gmail.com) at May 15, 2019 07:27 PM

Chronology-Core-cmm.45

- Make #utcOffset: match the prior behavior.
- Move Duration convenience constructors in Number to this package.

by Chris Muller (ma.chris.m@gmail.com) at May 15, 2019 03:33 AM

Chronology-Tests-cbc.21

Fixed DurationTest>>testNormalizeNanoSeconds to match new way of printing partial seconds from Chronology-Core-nice.42

"Always print duration subseconds by group of 3 digits (ms, us, ns)"

by Chris Cunningham (cunningham.cb@gmail.com) at May 15, 2019 02:42 AM

May 14, 2019

source.squeak.org

Morphic-cmm.1489

Fix TextEditor>>#hasMultipleLinesSelected to consider actual lines, instead of wrapped lines.

by Chris Muller (ma.chris.m@gmail.com) at May 14, 2019 10:53 PM

Chronology-Core-cbc.45

With the UTC / DateAndTime changs, DateAndTime>>utcOffset: changed to update the existing instance in place instead of creating a new instance.
The change fixes #asLocal to create a new instance, bypassing #utcOffset:.
Follows the same logic as used in #asUTC

by Chris Cunningham (cunningham.cb@gmail.com) at May 14, 2019 10:33 PM

squeaksource.com

LargeArithmeticBench-nice.11

- Shorter series for big bit lengths
- autotuning on an average of {1. 1/8+1} * threshold
since we increment by 1/8 in fine tuning, that's equivalent to taking 1/16 into account...
- change a few names

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at May 14, 2019 08:23 PM

May 10, 2019

squeaksource.com

LargeArithmeticBench-nice.6

Fixup another mess in report

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at May 10, 2019 03:46 PM

LargeArithmeticBench-nice.5

fixup slip of 2 printing of n bits in the report

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at May 10, 2019 03:02 PM

LargeArithmeticBench-nice.4

Fixup: bench D(10n,n) rather than twice M(n,10n)

Also offer a better output

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at May 10, 2019 02:09 PM

source.squeak.org

ImageFormat-dtl.36

Let 68004 be a base version number, supporting the 68021 64-bit Spur format. Base number plus Spur bit plus platform float order bit yields 68021.

68004 + 2r10001 ==> 68021

Restore a unit test that covers 68021format.
Reorganize method categories to clarify bit assignment methods.

Notes: 68004 has not been used in practice but is considered valid. These changes do not affect the generated ckformat.c program.

by David T. Lewis (lewis@mail.msen.com) at May 10, 2019 11:27 AM

squeaksource.com

LargeArithmeticBench-nice.3

Bench single division, not gcd: !!!

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at May 10, 2019 09:29 AM

LargeArithmeticBench-nice.2

Fixup length12Pairs
overlappingPairsDo: is not collect: !!!

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at May 10, 2019 08:58 AM

LargeArithmeticBench-nice.1

LargeArithmeticBench is a utility for benchmarking large integer operations

It's preferable to use a high resolution clock if available.
If you don't run from Squeak trunk, the timing methods can be extracted from
https://source.squeak.org/trunk/Chronology-Core-nice.44.mcz

To obtain a report, first open a transcript:
Transcript open.

Then launch the bench and be patient (your computer may heat)
LargeArithmeticBench new benchReport.

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at May 10, 2019 08:42 AM

May 09, 2019

source.squeak.org

VMMaker.oscog-GAP.2534

Convert numeric constants to strings for concatenation using #printString.
Required for Pharo compatibility, where the arguments of concatenation are not automatically coerced to strings.

by Eliot Miranda (eliot.miranda@gmail.com) at May 09, 2019 09:57 PM

squeaksource.com

IntegerFactorization-nice.3

Rename
RepeatedDivision->TrialDivisionByOdd
Sieve->TrialDivisionByPrime
The idea is to keep Sieve for other algorithm eventually

Introduce the Brent+Montgomery variant of Pollar-rho factorization.

To do: bench vs SQUFOF for various bit-length

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at May 09, 2019 07:15 PM

IntegerFactorizationTests-nice.3

Avoid testLargestSmallInteger time-out on 64bits VM

(positive SmallInteger are on 60 bits, which is already quite large)

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at May 09, 2019 07:12 PM

source.squeak.org

VMMakerCompatibilityForPharo6-GuillermoPolito.12

Moved tests to Pharo compatibility package

by Guillermo Polito (guillermopolito@gmail.com) at May 09, 2019 03:45 PM

VMMakerCompatibilityForPharo6-GuillermoPolito.11

Fixes to correctly translate ifNotNil: [:arg & variants.

This makes Cog compile and run.

by Guillermo Polito (guillermopolito@gmail.com) at May 09, 2019 03:16 PM

VMMakerCompatibilityForPharo6-GuillermoPolito.11

Fixes to correctly translate ifNotNil: [:arg & variants.

This makes Cog compile and run.

by Guillermo Polito (guillermopolito@gmail.com) at May 09, 2019 03:15 PM

VMMakerCompatibilityForPharo6-GuillermoPolito.10

Fixes in AST translation to make it work as in Squeak
- to:do: => to:by:do: with extra arguments
- ifNil:ifNotNil: => ifTrue:ifFalse:
- fix arguments in TMethods
- fix comments in TMethods
- add name at the level of TParseNode (#name is not defined in Object anymore in Pharo)

Other
- Added FileDirectory compatibility layer using FileSystem behind the scenes (see FileDirectory and VMMakerFile classes).
- Added PackageOrganizer compatibility layer using RPackage behind the scenes.
- Extending Scanner and SystemNavigation with compatibility methods
- Extending Time with compatibility method

by Guillermo Polito (guillermopolito@gmail.com) at May 09, 2019 03:14 PM

VMMaker.oscog-GAP.2534

Convert numeric constants to strings for concatenation using #printString.
Required for Pharo compatibility, where the arguments of concatenation are not automatically coerced to strings.

May 09, 2019 03:12 PM

60Deprecated-pre.35

Deprecates classes and methods related to executing Squeak in a web browser through a browser plugin. They can be loaded through the 60Deprecated-NSPlugin-System-Support package.

by Patrick Rein (patrick.rein@gmail.com) at May 09, 2019 02:35 PM

System-pre.1063

Deprecates classes and methods related to executing Squeak in a web browser through a browser plugin. They can be loaded through the 60Deprecated-NSPlugin-System-Support package.

by Patrick Rein (patrick.rein@gmail.com) at May 09, 2019 02:34 PM

Network-pre.233

Deprecates classes and methods related to executing Squeak in a web browser through a browser plugin. They can be loaded through the 60Deprecated-NSPlugin-System-Support package.

by Patrick Rein (patrick.rein@gmail.com) at May 09, 2019 02:33 PM

Files-pre.183

Deprecates classes and methods related to executing Squeak in a web browser through a browser plugin. They can be loaded through the 60Deprecated-NSPlugin-System-Support package.

by Patrick Rein (patrick.rein@gmail.com) at May 09, 2019 02:31 PM

Collections-mt.832

Adds #take: to create a sub-collection from any collection by specifying the number of elements. Works like #first: for sequenceable collections but does not fail if collection is too small.

May 09, 2019 01:27 PM

squeaksource.com

IntegerFactorizationTests-nice.2

Test the factorization of largest odd SmallInteger (assuming maxVal is odd)

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at May 09, 2019 01:15 PM

IntegerFactorization-nice.2

Introduce Shank's Square Form Factorization SQUFOF for large SmallInteger.

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at May 09, 2019 01:13 PM

source.squeak.org

Kernel-nice.1229

Fix (0 bitShift: 100) is not normalized
(0 bitShift: 100) class = LargePositiveInteger.

Why is it not normalized?
First, primitiveBitShift (17) fails because shift is longer than SmallInteger bit length (maybe it should not?), then bitShiftMagnitude: (primDigitBitShiftMagnitude:) does not normalize a left shift result, assuming that primitive 17 already did the trivial work if result were a SmallInteger.

Why is normalization important?
because non normalized Integers do not behave like SmallInteger and can cause all sort of undefined behavior (I had an infinite loop because of that)

How to fix?
just handle the case in primitive fallback code

While at it:
Do not use bitShiftMagnitude: when we do not need to (case of left shift are equivalent to bitShift:), because playing with not normalized results may lead to undefined behavior.

by Nicolas Cellier (nicolas.cellier.aka.nice@gmail.com) at May 09, 2019 08:14 AM

EToys-cmm.342

Ask whether a Parameter and Phrase tiles whether they're #isBooleanType, to allow proper distinction of the actual instances of Boolean.

by Nicolas Cellier (nicolas.cellier.aka.nice@gmail.com) at May 09, 2019 07:01 AM

Kernel-cmm.1228

Allow identification of instances of Boolean via #isBoolean.

by Nicolas Cellier (nicolas.cellier.aka.nice@gmail.com) at May 09, 2019 06:55 AM

May 04, 2019

squeaksource.com

ImageSnapshot-dtl.4

Add ImageSnapshot>>reboot to resume the interpreter in a snapshot, discarding the previous object memory.

Requires #primitiveResumeFromSnapshot, not yet implemented in the VM.

by Dave Lewis (lewis@mail.msen.com) at May 04, 2019 02:12 PM

source.squeak.org

VMMaker-dtl.401

VMMaker 4.16.6
Primitive support for snapshot objects, answering object memory and header as in-image objects. Instead of disk-based snapshot file. Currently implemented in ContextInterpreter.

"ImageSnapshot new"

The primitives are:
#primitiveInterpreterStateSnapshot - snapshot the header information
#primitiveMemoryCopy - snapshot the memory
#primitiveMemorySnapshotBytesWithHeader - snapshot memory bytes and header
#primitiveMemorySnapshotWithHeader - snapshot memory bitmap and header

mage side support package ImageFormat in http://source.squeak.org/VMMaker:
ImageFileHeader fromValues: ImageFileHeader primInterpreterStateSnapshot.
ImageFileHeader primMemoryCopy.

Image side support from package ImageSnapshot in http://www.squeaksource.com/ImageSnapshot:
ImageSnapshot basicNew getSnapshot.
ImageBitmapSnapshot basicNew getSnapshot.

Snapshot to disk, equivalent to normal snapshot:
ImageSnapshot new saveAs: 'newimage.image'

by David T. Lewis (lewis@mail.msen.com) at May 04, 2019 01:23 PM

squeaksource.com

Kernel.V3-dtl.1224

Name: Kernel-nice.1224
Author: nice
Time: 3 May 2019, 10:43:02.707788 pm
UUID: cf1a5ae4-ac18-47aa-880c-db91874842cb
Ancestors: Kernel-fn.1223

Refactor the fast LargeInteger operations

Rename:
- fastMultiply: -> multiplyByInteger:
Rationale: it's not necessarily fast but it's specifically for the case when we know that argument is an Integer.

Ensure symetry between * and /
- digitDiv:neg: -> divideByInteger:
- primDigitDiv:neg -> digitDiv:neg: (revert previous rename)

Rename
- karatsubaTimes: tooms3Times: -> digitMul22: digitMul33:
Rationale: it ensures symetry with digitDiv21: and digitDiv32:

Rename similarly
- squaredKaratsuba squaredToom3 squaredToom4 -> squaredByHalf squaredByThird squaredByFourth

Introduce digitMul23: for marginal improvment in case of partially well balanced

Remove the send of Inteval>>digitShiftSum:
Replace with #digitMulSplit: which is an optimized version in O(N) rather than O(N*log2 N)- see below

Rename
- recursiveDigitDiv: -> digitDivSplit: since it plays somehow a similar role than that of digitMulSplit: (decompose in digitDiv21: operations)
Use a O(N) recomposition of quotient

Reduce the cost of divide and conquer reconstruction phase by using (with great care) inplaceAddNonOverlapping:digitShiftBy: when possible.

Rationale: the cost is non completely dominated by non linear O(N^x), partly due to repeated #+ and #digitShift: which allocate, copy, allocate, copy, allocate, copy like Shlemiel.

We now have this sequence:

1) * / call primitive of SmallInteger or (optional) 64 bits LargeInteger
2) if fail, super * will handle coercion or call multiplyByInteger: divideByInteger:
3) multiplyByInteger: and divideByInteger: will dispatch to appropriate method based on heuristics on operands length
3.a) schoolbook digitMultiply:neg: digitDiv:neg: which call (optional) LargeInteger primitives or revert to slow 1-byte-limb fallback code
3.b) digitMultiplySplit: if not well balanced operands / recursiveDigitDiv: for about the same purpose
3.c) digitMul22: digitMul23: digitMul33: digitDiv21: digitDiv32:

Accelerate a bit the nthRoot: by providing a better (divide and conquer) initial guess a bit like sqrtRem algorithm.
While at it, use raisedToInteger: instead of raisedTo:
Since this small refactoring makes two tests fail (bad tests IMO), provide an assertion of pre-condition (the argument is a strictly positive integer)

by Dave Lewis (lewis@mail.msen.com) at May 04, 2019 12:50 PM

Collections.V3-dtl.829

Name: Collections-nice.829
Author: nice
Time: 3 May 2019, 11:06:11.65639 pm
UUID: 695419ed-754d-41ff-8b51-b8715934b1f5
Ancestors: Collections-fn.828

Remove unused digitShiftSum: (since Kernel-nice.1224)

by Dave Lewis (lewis@mail.msen.com) at May 04, 2019 12:43 PM

May 03, 2019

source.squeak.org

VMMaker-dtl.400

VMMaker 4.16.6 - Better error message when interpreter encounters an unsupported image format.

Instead of this:
This interpreter (vers. 0) cannot read image file (vers. 68021).
Press CR to quit...

Say this:
This interpreter supports image formats up to 6505, cannot read file format 68021

by David T. Lewis (lewis@mail.msen.com) at May 03, 2019 10:11 PM

Collections-nice.829

Remove unused digitShiftSum: (since Kernel-nice.1224)

by Nicolas Cellier (nicolas.cellier.aka.nice@gmail.com) at May 03, 2019 09:06 PM

KernelTests-nice.361

Apply refactorings of Kernel-nice.1224

by Nicolas Cellier (nicolas.cellier.aka.nice@gmail.com) at May 03, 2019 08:46 PM

Kernel-nice.1224

Refactor the fast LargeInteger operations

Rename:
- fastMultiply: -> multiplyByInteger:
Rationale: it's not necessarily fast but it's specifically for the case when we know that argument is an Integer.

Ensure symetry between * and /
- digitDiv:neg: -> divideByInteger:
- primDigitDiv:neg -> digitDiv:neg: (revert previous rename)

Rename
- karatsubaTimes: tooms3Times: -> digitMul22: digitMul33:
Rationale: it ensures symetry with digitDiv21: and digitDiv32:

Rename similarly
- squaredKaratsuba squaredToom3 squaredToom4 -> squaredByHalf squaredByThird squaredByFourth

Introduce digitMul23: for marginal improvment in case of partially well balanced

Remove the send of Inteval>>digitShiftSum:
Replace with #digitMulSplit: which is an optimized version in O(N) rather than O(N*log2 N)- see below

Rename
- recursiveDigitDiv: -> digitDivSplit: since it plays somehow a similar role than that of digitMulSplit: (decompose in digitDiv21: operations)
Use a O(N) recomposition of quotient

Reduce the cost of divide and conquer reconstruction phase by using (with great care) inplaceAddNonOverlapping:digitShiftBy: when possible.

Rationale: the cost is non completely dominated by non linear O(N^x), partly due to repeated #+ and #digitShift: which allocate, copy, allocate, copy, allocate, copy like Shlemiel.

We now have this sequence:

1) * / call primitive of SmallInteger or (optional) 64 bits LargeInteger
2) if fail, super * will handle coercion or call multiplyByInteger: divideByInteger:
3) multiplyByInteger: and divideByInteger: will dispatch to appropriate method based on heuristics on operands length
3.a) schoolbook digitMultiply:neg: digitDiv:neg: which call (optional) LargeInteger primitives or revert to slow 1-byte-limb fallback code
3.b) digitMultiplySplit: if not well balanced operands / recursiveDigitDiv: for about the same purpose
3.c) digitMul22: digitMul23: digitMul33: digitDiv21: digitDiv32:

Accelerate a bit the nthRoot: by providing a better (divide and conquer) initial guess a bit like sqrtRem algorithm.
While at it, use raisedToInteger: instead of raisedTo:
Since this small refactoring makes two tests fail (bad tests IMO), provide an assertion of pre-condition (the argument is a strictly positive integer)

by Nicolas Cellier (nicolas.cellier.aka.nice@gmail.com) at May 03, 2019 08:43 PM

Tests-pre.411

Adds a simple test case for listing file directory entries and adjusts the tearDown accordingly.

by Patrick Rein (patrick.rein@gmail.com) at May 03, 2019 02:34 PM

May 02, 2019

source.squeak.org

Chronology-Core-cbc.41

We have the ability to change the starting day of the week (Week>>startDay:).
This change adds #dayOfLocalWeek to DateAndTime and Timespan to return the indexed day of the week based on the altered starting day.
Original #dayOfWeek is left as-is along with all other working code.

by David T. Lewis (lewis@mail.msen.com) at May 02, 2019 10:06 PM

SqueakSSL-Tests-pre.24

Recategorizes tests and test utility methods in SqueakSSL

by Patrick Rein (patrick.rein@gmail.com) at May 02, 2019 01:22 PM

NetworkTests-pre.58

Improves two test cases for MailMessages relying on old DateAndTime behavior.

by Patrick Rein (patrick.rein@gmail.com) at May 02, 2019 01:20 PM

NetworkTests-pre.57

Adds a number of new tests for the MIMEDocument class.

by Patrick Rein (patrick.rein@gmail.com) at May 02, 2019 01:10 PM

NetworkTests-pre.56

Recategorizes some test methods and expected failure methods.

by Patrick Rein (patrick.rein@gmail.com) at May 02, 2019 01:06 PM

CollectionsTests-pre.307

Fixes a defect in BagTest spotted by Bob Arning

by Patrick Rein (patrick.rein@gmail.com) at May 02, 2019 07:34 AM

April 30, 2019

source.squeak.org

CollectionsTests-pre.306

Recategorizes test methods in CollectionsTests

by Patrick Rein (patrick.rein@gmail.com) at April 30, 2019 06:00 PM

KernelTests-pre.360

Recategorizes test methods in KernelTests

by Patrick Rein (patrick.rein@gmail.com) at April 30, 2019 05:43 PM

SUnit-pre.115

Recategorizes test methods in SUnit to create a good example to start from.

by Patrick Rein (patrick.rein@gmail.com) at April 30, 2019 05:18 PM

WebClient-Tests-pre.58

Fixes a test which does not deal well with time precision beyond a second.

by Patrick Rein (patrick.rein@gmail.com) at April 30, 2019 05:08 PM

WebClient-Tests-pre.57

Recategorizes some methods in WebClient-Tests

by Patrick Rein (patrick.rein@gmail.com) at April 30, 2019 05:02 PM

Tests-pre.410

Recategorizes test methods and expected failure methods into tests and failures categories.

by Patrick Rein (patrick.rein@gmail.com) at April 30, 2019 04:59 PM

CommandLine-pre.13

Makes the ProvideAnswerNotification handling more robust with regard to the input (actual value or index)

by Patrick Rein (patrick.rein@gmail.com) at April 30, 2019 01:28 PM

ToolBuilder-Morphic-pre.227

Makes the ProvideAnswerNotification handling more robust with regard to the input (actual value or index)

by Patrick Rein (patrick.rein@gmail.com) at April 30, 2019 01:27 PM

ToolBuilder-MVC-pre.55

Makes the ProvideAnswerNotification handling more robust with regard to the input (actual value or index)

by Patrick Rein (patrick.rein@gmail.com) at April 30, 2019 01:26 PM

KernelTests-pre.359

Adds a test case for #valueSupplyingAnswers: for selecting from a list through specifying the element or the index.

by Patrick Rein (patrick.rein@gmail.com) at April 30, 2019 01:24 PM

April 29, 2019

source.squeak.org

ToolBuilder-Morphic-tfel.83

use borderColor and borderWidth if set when building a pluggable list

by Patrick Rein (patrick.rein@gmail.com) at April 29, 2019 06:49 PM

SUnitGUI-nice.57

Let TestRunner inherit from Model.
This is to avoid remnancy of TestRunner in Object's DependentsFields.

by Patrick Rein (patrick.rein@gmail.com) at April 29, 2019 06:45 PM

WebClient-Core-cbc.118

A hack to work around connectionTimedOut annoyances when opening packages from Trunk (sometimes).

by Patrick Rein (patrick.rein@gmail.com) at April 29, 2019 06:41 PM

WebClient-Core-fn.105

Disable certificate validation on all platforms for the time being. It turns out, this does not only probably work on macOS, but also on Windows and Linux. The WebClient seems to have problems with some certificates used for popular domains, e.g. google.com and github.com. The Zinc library does not perform the validation as well at the moment.

by Patrick Rein (patrick.rein@gmail.com) at April 29, 2019 06:39 PM

ToolBuilder-Morphic-jr.225

Fix: FileSaverDialog would answer 'nil' instead of nil when nothing was done except for accepting the dialog

by Patrick Rein (patrick.rein@gmail.com) at April 29, 2019 06:35 PM

ToolBuilder-Morphic-pre.226

Fix: FileSaverDialog would answer 'nil' instead of nil when nothing was done except for accepting the dialog

Merged from inbox commit ToolBuilder-Morphic-jr.225

by Patrick Rein (patrick.rein@gmail.com) at April 29, 2019 06:35 PM

Morphic-pre.1488

Improves the check for whether a keystroke for the text morph for edit view will change the text to send the #editText callback. Refactors the check by creating a cached character set.

by Patrick Rein (patrick.rein@gmail.com) at April 29, 2019 06:20 PM

MorphicTests-pre.50

Adds tests for the text morph for edit view which checks whether the right characters are filtered for editText: callbacks

by Patrick Rein (patrick.rein@gmail.com) at April 29, 2019 06:16 PM

squeaksource.com

Collections.V3-dtl.828

No changes, Character cannot be immediate in V3 images.

Name: Collections-fn.828
Author: fn
Time: 29 April 2019, 12:52:37.794699 pm
UUID: a663df49-93bf-413e-a942-29f1d0fa4605
Ancestors: Collections-nice.827

Character shouldNotImplement postCopy.

by Dave Lewis (lewis@mail.msen.com) at April 29, 2019 11:37 AM

Kernel.V3-dtl.1223

No changes, Float cannot be immediate in V3 images.

Name: Kernel-fn.1223
Author: fn
Time: 29 April 2019, 12:52:13.424813 pm
UUID: 910aa151-72fe-4f6c-9645-fa735fb17f63
Ancestors: Kernel-nice.1222

SmallInteger and SmallFloat64 shouldNotImplement postCopy.

by Dave Lewis (lewis@mail.msen.com) at April 29, 2019 11:28 AM

source.squeak.org

Collections-fn.828

Character shouldNotImplement postCopy.

by Fabio Niephaus (code@fniephaus.com) at April 29, 2019 10:52 AM

Kernel-fn.1223

SmallInteger and SmallFloat64 shouldNotImplement postCopy.

by Fabio Niephaus (code@fniephaus.com) at April 29, 2019 10:52 AM

April 28, 2019

squeaksource.com

Kernel.V3-dtl.1222

Name: Kernel-nice.1222
Author: nice
Time: 28 April 2019, 3:55:49.124486 pm
UUID: e697844c-d6bd-4781-a572-553f79c98644
Ancestors: Kernel-nice.1221

Make fastMultiply: the default for multiplying integers

The scheme is:
- first try 64bit imul (primitive 29) if receiver is Large, or (primitive 9) if receiver is Small.
- then check for operand type in super *, use fastMultiply: if Integer
- then check receiver length and invoke O(N^2) schoolbook multiply if too small ( invoke LargeIntegers primitive thru digitMultiply:neg: )
- then check operand byte length
- then dispatch to Karatsuba or Toom3 (or future enhancements)

For medium integers (>64 bits) that's only 1 indirection more than previous implementation, so a very small (negligible) penalty.

For larger integers (a few thousand bits) that's a win.

Note that the length threshold heuristics may vary from one platform to another, one VM to another, and wether images are 32 or 64 bits...
We could make them class var, and offer some initialize method so as to automatically tune them.

by Dave Lewis (lewis@mail.msen.com) at April 28, 2019 09:48 PM

Kernel.V3-dtl.1221

Name: Kernel-nice.1221
Author: nice
Time: 28 April 2019, 2:31:07.899491 am
UUID: 4aeee53e-f320-4ece-bf93-a5458f65bef3
Ancestors: Kernel-nice.1220

Fix broken pre-condition a3>=b/4 in sqrtRem.
While at it, care to explain.

by Dave Lewis (lewis@mail.msen.com) at April 28, 2019 09:43 PM

April 27, 2019

squeaksource.com

Collections.V3-dtl.826

Name: Collections-nice.826
Author: nice
Time: 25 April 2019, 2:22:58.283343 pm
UUID: 116c66c9-4c34-5c4f-a9d9-c21d3141c5ea
Ancestors: Collections-fn.825

Fix bugs in LazyCharacterSet
The block instance variable should not refer to itself, or we'll get an infinite recursion when evaluating.
Thus when modifying the collection (#add: #addAll: #remove: #removeAll:), we must use a temporary reference to block

Fix another typo bug in removeAll s/include:/includes:/

Unfortunately, there was a Player>>#include: preventing an easy detection of the bug

Example:

(CharacterSet separators complement reject: [:e | e isVowel])
removeAll: ($0 to: $9);
includes: $3.

by Dave Lewis (lewis@mail.msen.com) at April 27, 2019 12:55 PM

Collections.V3-dtl.825

Name: Collections-fn.825
Author: fn
Time: 12 April 2019, 9:30:29.397159 am
UUID: 3110d8f6-fa38-4d91-8358-aed2eadbd9a7
Ancestors: Collections-nice.824

Just like strings, characters should convert themselves to an integer when involved in arithmetic with a number.

Example:
$c < 98.9 "false"
98.9 < $c "opened debugger, now returns true"

by Dave Lewis (lewis@mail.msen.com) at April 27, 2019 12:54 PM

Collections.V3-dtl.824

Name: Collections-nice.824
Author: nice
Time: 7 April 2019, 10:40:26.559826 pm
UUID: e6d75dba-26a8-4945-a930-3d79f8cd4969
Ancestors: Collections-ul.823

Implement Collection>>#log2, since it already responds to #ln and #log...

Correct a Pharoism in DefaultSortFunction comment, there is no #threeWayCompareTo: because we prefer the space-ship operator <=>

Correct a slip in LazyCharacterSet comment.

Let ({1. 3/2. 2} as: Interval) work as it should.

Remove Interval>>#remove: since it duplicates unecessarily super remove:ifAbsent: (which shouldNotImplement already).

Don't spend too much time sorting an Interval, it's already sorted.

by Dave Lewis (lewis@mail.msen.com) at April 27, 2019 12:53 PM

Kernel.V3-dtl.1220

Name: Kernel-nice.1220
Author: nice
Time: 27 April 2019, 2:36:07.52994 pm
UUID: b2eb6e2e-1dfa-4d23-9421-ec0e5e8d4f86
Ancestors: Kernel-fn.1216

Accelerate some huge Integer arithmetic
(This is a squash of inbox commits)

These algorithms use divide and conquer strategy that recursively split a problem into simpler problems.

1) Multiplication and Squaring

- Implement Karatsuba and 3-way Toom-Cook algorithms for fast large integer multiplication (a Bodrato Zanoni variant)

- Implement the 2-way asymetrical Karatsuba, 3-way symetrical, and 4-way asymetrical Toom-Cook squaring variant of Chung-Hasan. Note that asymetrical squareToom4 over-performs the symetrical squaredToom3 even for medium size (800 bytes).

- provide a fastMultiply: that dispatch on appropriate variant based on heuristics. Currently this fast multiplication is used only in LargePositiveInteger>>squared, and other algorithme below.

- slightly modify raisedToInteger: to use that squared.
This result in a small penalty for small number exponentation, but large speed up for big integers.

2) Square-root

- implement the Karatsuba-like square root algorithm from Paul Zimmerman.

3) Division

- Implement the recursive fast division of Burnikel-Ziegler for large integers and connect it to digitDiv:neg: when operands are large enough.

- Use this recursive algorithm to accelerate digitDiv:neg:

This is not the fastest known division which is a composition of Barrett and Newton-Raphson inversion - but is easy to implement and should have similar performances for at least a few thousand bytes long integers - see for example http://bioinfo.ict.ac.cn/~dbu/AlgorithmCourses/Lectures/Lec5-Fast-Division-Hasselstrom2003.pdf

4) Printing

- Use digitDiv:neg: in large integer printString so as to obtain the quotient (head) and remainder (tail) in a single operation. Together with divide and conquer division, this results in a factor of about 4x for 50000 factorial printString.


Examples on a 64 bits image/VM (MBP 2015 i5 2.7GHz)

[10 raisedToInteger: 30] bench.
'3,770,000 per second. 265 nanoseconds per run.' - before
'3,500,000 per second. 286 nanoseconds per run.' - after
[10.0 raisedToInteger: 30] bench.
'10,900,000 per second. 91.6 nanoseconds per run.' - before
'9,540,000 per second. 105 nanoseconds per run.' - after

| x |
x := 100 factorial.
[x raisedToInteger: 30] bench.
'15,900 per second. 63 microseconds per run.' - before
'19,500 per second. 51.3 microseconds per run.' - after

| x |
x := 1000 factorial.
[x raisedToInteger: 30] bench.
'58.8 per second. 17 milliseconds per run.' - before
'179 per second. 5.6 milliseconds per run.' - after

| x |
x := 500 factorial - 100 factorial.
{
[x sqrtFloor] bench.
[x sqrtFloorNewtonRaphson] bench.
}
#(
'42,300 per second. 23.6 microseconds per run.'
'8,240 per second. 121 microseconds per run.')

| x |
x := 50000 factorial - 10000 factorial + 5000 factorial - 1000 factorial + 500 factorial - 100 factorial + 50 factorial - 10 factorial + 5 factorial - 1.
{
[x printString] bench.
}
#('1.29 per second. 778 milliseconds per run.') - before
#('5.12 per second. 195 milliseconds per run.') - after

by Dave Lewis (lewis@mail.msen.com) at April 27, 2019 12:51 PM

Kernel.V3-dtl.1216

Name: Kernel-fn.1216
Author: fn
Time: 27 April 2019, 11:08:43.467561 am
UUID: 4af5e126-9387-41b6-bd41-a6c526f0bd8a
Ancestors: Kernel-eem.1215

Make SmallInteger's method overrides for copying consistent with those of SmallFloat64.

by Dave Lewis (lewis@mail.msen.com) at April 27, 2019 12:46 PM

source.squeak.org

KernelTests-nice.357

Add some tests for new huge Integer arithmetic algorithms

Note: I'd like to test things like:

x := self x106kbits
self assert: [x squaredToom4] runsFasterThan: [x squaredKaratsuba].

But I'm afraid that it might sometimes fail, depending on particular slave machnie load...

Benchmarking is an art...

by Nicolas Cellier (nicolas.cellier.aka.nice@gmail.com) at April 27, 2019 12:45 PM

squeaksource.com

System.V3-dtl.1061

Name: System-cmm.1061
Author: cmm
Time: 4 April 2019, 6:30:34.295865 pm
UUID: d55f8c82-4dea-4d11-be0c-ff63c61b7e04
Ancestors: System-eem.1058

Metacello and GitInfrastructure tools are currently the best way to load projects hosted by github.com. Promote installation of these tools to the Tools menu.
While in there, make a couple of improvements to the Do menu.

by Dave Lewis (lewis@mail.msen.com) at April 27, 2019 12:43 PM

source.squeak.org

Kernel-nice.1217

Publish Karatsuba and 3-way Toom-Cooke algorithms for fast large integer multiplication.
These are efficient divide and conquer algorithms that recursively split a problem into simpler problems.

Currently this fast multiplication is used only in LargePositiveInteger>>squared.
Slightly modify raisedToInteger: to use that squared.
This result on a small penalty for small number exponentation, but large speed up for big integers.

Also publish another Karatsuba-like square root algorithm that should accelerate sqrt of huge integers.


Examples on a 64 bits image/VM

[10 raisedToInteger: 30] bench.
'3,770,000 per second. 265 nanoseconds per run.' - before
'3,500,000 per second. 286 nanoseconds per run.' - after
[10.0 raisedToInteger: 30] bench.
'10,900,000 per second. 91.6 nanoseconds per run.' - before
'9,540,000 per second. 105 nanoseconds per run.' - after

| x |
x := 100 factorial.
[x raisedToInteger: 30] bench.
'15,900 per second. 63 microseconds per run.' - before
'19,500 per second. 51.3 microseconds per run.' - after

| x |
x := 1000 factorial.
[x raisedToInteger: 30] bench.
'58.8 per second. 17 milliseconds per run.' - before
'179 per second. 5.6 milliseconds per run.' - after

| x |
x := 500 factorial - 100 factorial.
{
[x sqrtFloor] bench.
[x sqrtFloorNewtonRaphson] bench.
}
#(
'42,300 per second. 23.6 microseconds per run.'
'8,240 per second. 121 microseconds per run.')

by Nicolas Cellier (nicolas.cellier.aka.nice@gmail.com) at April 27, 2019 12:37 PM

Kernel-nice.1218

Implement the recursive fast division of Burnikel-Ziegler for large integers and connect it to digitDiv:neg: when operands are large enough.

This is not the fastest known division which is a composition of Barrett and Newton-Raphson inversion - but is easy to implement and should have similar performances for at least a few thousand bytes long integers - see for example http://bioinfo.ict.ac.cn/~dbu/AlgorithmCourses/Lectures/Lec5-Fast-Division-Hasselstrom2003.pdf

Use digitDiv:neg: in large integer printString so as to obtain the quotient (head) and remainder (tail) in a single operation. Together with divide and conquer division, this results in a factor of about 3x for 50000 factorial printString.

Implement the 4-way Toom-Cook squaring variant of Chung-Hasan. This over-performs the symetrical squaredToom3 even for medium size (800 bytes).

by Nicolas Cellier (nicolas.cellier.aka.nice@gmail.com) at April 27, 2019 12:37 PM

Kernel-nice.1219

Fix large digitDiv:neg: sign mess.
Remove a useless temp in fastMultiply
Comment toom3 reference better (The work of Bodrato Zanoni deserve it)

by Nicolas Cellier (nicolas.cellier.aka.nice@gmail.com) at April 27, 2019 12:37 PM

Kernel-nice.1220

Accelerate some huge Integer arithmetic
(This is a squash of inbox commits)

These algorithms use divide and conquer strategy that recursively split a problem into simpler problems.

1) Multiplication and Squaring

- Implement Karatsuba and 3-way Toom-Cook algorithms for fast large integer multiplication (a Bodrato Zanoni variant)

- Implement the 2-way asymetrical Karatsuba, 3-way symetrical, and 4-way asymetrical Toom-Cook squaring variant of Chung-Hasan. Note that asymetrical squareToom4 over-performs the symetrical squaredToom3 even for medium size (800 bytes).

- provide a fastMultiply: that dispatch on appropriate variant based on heuristics. Currently this fast multiplication is used only in LargePositiveInteger>>squared, and other algorithme below.

- slightly modify raisedToInteger: to use that squared.
This result in a small penalty for small number exponentation, but large speed up for big integers.

2) Square-root

- implement the Karatsuba-like square root algorithm from Paul Zimmerman.

3) Division

- Implement the recursive fast division of Burnikel-Ziegler for large integers and connect it to digitDiv:neg: when operands are large enough.

- Use this recursive algorithm to accelerate digitDiv:neg:

This is not the fastest known division which is a composition of Barrett and Newton-Raphson inversion - but is easy to implement and should have similar performances for at least a few thousand bytes long integers - see for example http://bioinfo.ict.ac.cn/~dbu/AlgorithmCourses/Lectures/Lec5-Fast-Division-Hasselstrom2003.pdf

4) Printing

- Use digitDiv:neg: in large integer printString so as to obtain the quotient (head) and remainder (tail) in a single operation. Together with divide and conquer division, this results in a factor of about 4x for 50000 factorial printString.


Examples on a 64 bits image/VM (MBP 2015 i5 2.7GHz)

[10 raisedToInteger: 30] bench.
'3,770,000 per second. 265 nanoseconds per run.' - before
'3,500,000 per second. 286 nanoseconds per run.' - after
[10.0 raisedToInteger: 30] bench.
'10,900,000 per second. 91.6 nanoseconds per run.' - before
'9,540,000 per second. 105 nanoseconds per run.' - after

| x |
x := 100 factorial.
[x raisedToInteger: 30] bench.
'15,900 per second. 63 microseconds per run.' - before
'19,500 per second. 51.3 microseconds per run.' - after

| x |
x := 1000 factorial.
[x raisedToInteger: 30] bench.
'58.8 per second. 17 milliseconds per run.' - before
'179 per second. 5.6 milliseconds per run.' - after

| x |
x := 500 factorial - 100 factorial.
{
[x sqrtFloor] bench.
[x sqrtFloorNewtonRaphson] bench.
}
#(
'42,300 per second. 23.6 microseconds per run.'
'8,240 per second. 121 microseconds per run.')

| x |
x := 50000 factorial - 10000 factorial + 5000 factorial - 1000 factorial + 500 factorial - 100 factorial + 50 factorial - 10 factorial + 5 factorial - 1.
{
[x printString] bench.
}
#('1.29 per second. 778 milliseconds per run.') - before
#('5.12 per second. 195 milliseconds per run.') - after

by Nicolas Cellier (nicolas.cellier.aka.nice@gmail.com) at April 27, 2019 12:36 PM

Kernel-fn.1216

Make SmallInteger's method overrides for copying consistent with those of SmallFloat64.

by Fabio Niephaus (code@fniephaus.com) at April 27, 2019 09:08 AM

Morphic-cmm.1486

- Fix a glitch in #tryInvokeHalo: which could lead to mis-identification of the correct halo target.
- Update the new Tools menu entry to read "Git Browser".

by Chris Muller (ma.chris.m@gmail.com) at April 27, 2019 01:43 AM

Morphic-cmm.1487

- Fix revisions of class definitions when there's another PackageInfo defined whose full name is only a prefix of the working copy the selected class belongs to.
- Check the local package-cache before hitting the server for operations where the ancestral UUID is known, such as diffing from the History list. Keep its allFileNamesCache up to date.

by Chris Muller (ma.chris.m@gmail.com) at April 27, 2019 01:42 AM

Installer-Core-cmm.431

Auto-install Metacello if necessary when a Metacello load script is executed.

by Chris Muller (ma.chris.m@gmail.com) at April 27, 2019 01:15 AM

Monticello-cmm.699

- Fix revisions of class definitions when there's another PackageInfo defined whose full name is only a prefix of the working copy the selected class belongs to.
- Check the local package-cache before hitting the server for operations where the ancestral UUID is known, such as diffing from the History list. Keep its allFileNamesCache up to date.

by Chris Muller (ma.chris.m@gmail.com) at April 27, 2019 01:10 AM

April 26, 2019

squeaksource.com

NuScratch-tpr.383

Add option to control reverb in the settings file

by tim rowledge (tim@rowledge.org) at April 26, 2019 11:08 PM

JSON-tonyg.39

Change JsonTests>>testStreaming to compare to JsonObject new, rather than just testing isDictionary.

testStreaming should not only check that the result is a dictionary, but that it is empty.

by tim rowledge (tim@rowledge.org) at April 26, 2019 10:56 PM

OpenWeatherMaps-tpr.4

2nd attempt to update JSONpackage dependency to tonyg.39b

by tim rowledge (tim@rowledge.org) at April 26, 2019 10:56 PM

ScratchGPIO-tpr.20

better parsing of the sitekey in the cmdstream

by tim rowledge (tim@rowledge.org) at April 26, 2019 10:56 PM

source.squeak.org

ShoutCore-nice.63

Attempt to fix highlighting of 1to:-1

I don't see the point of testing the presence of a binary selector character after a colon $:, except maybe the case of assignment :=, so only test that case.

by Nicolas Cellier (nicolas.cellier.aka.nice@gmail.com) at April 26, 2019 08:27 PM

Chronology-Core-nice.42

Make usage of highResolution clock for block-timing a Preference.
This is because TSC are not reliable enough on old CPU (or not available).

Always print duration subseconds by group of 3 digits (ms, us, ns)

by Nicolas Cellier (nicolas.cellier.aka.nice@gmail.com) at April 26, 2019 05:28 PM

squeaksource.com

Smallapack-Matrix-nice.32

Fix two failing tests on Squeak trunk due to Array ~= Interval refactoring.

Who is going to need that Array = Interval feature, probably nobody...
Err, myself! I know who to blame ;)

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at April 26, 2019 05:44 AM

April 25, 2019

squeaksource.com

ConfigurationOfSmallapack-nice.30

Fix pharo7.x FFI loads:

April 25, 2019 07:34 PM

ConfigurationOfSmallapack-nice.30

Fix pharo7.x FFI loads:

April 25, 2019 07:34 PM

ConfigurationOfSmallapack-nice.29

Add a configuration for Pharo 7.x

April 25, 2019 07:02 PM

ConfigurationOfSmallapack-nice.29

Add a configuration for Pharo 7.x

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at April 25, 2019 07:02 PM

Smallapack-SUnitTests-nice.15

Fix miss-cateforizing of #testSmallPackAugmenting

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at April 25, 2019 06:35 PM

Smallapack-CompatibilityTests-nice.2

Fix miss-cateforizing of #testSmallPackAugmenting

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at April 25, 2019 06:34 PM

source.squeak.org

Collections-nice.826

Fix bugs in LazyCharacterSet
The block instance variable should not refer to itself, or we'll get an infinite recursion when evaluating.
Thus when modifying the collection (#add: #addAll: #remove: #removeAll:), we must use a temporary reference to block

Fix another typo bug in removeAll s/include:/includes:/

Unfortunately, there was a Player>>#include: preventing an easy detection of the bug

Example:

(CharacterSet separators complement reject: [:e | e isVowel])
removeAll: ($0 to: $9);
includes: $3.

by Nicolas Cellier (nicolas.cellier.aka.nice@gmail.com) at April 25, 2019 12:23 PM

April 24, 2019

squeaksource.com

Smallapack-OpalCompiler.Pharo7-nice.7

Fix another Pharo7 refactoring s/OpalEncoderForSistaV1/EncoderForSistaV1/

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at April 24, 2019 08:17 PM

Smallapack-OpalCompiler.Pharo7-nice.6

Quick recipe for surviving to pharo 7 refactorings.

In Pharo 7, we must access the methodNode properties with methodProperties

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at April 24, 2019 07:47 PM

April 22, 2019

source.squeak.org

SMLoader-cmm.93

- Allow releases which are not necessarily published to be selected when the UI selection was at the package level.
- Fix the problem of Release scripts seemingly not updating, due to not refreshing the local cache after uploading the script to the server.

by Chris Muller (ma.chris.m@gmail.com) at April 22, 2019 12:57 AM

Installer-Core-cmm.431

Auto-install Metacello if necessary when a Metacello load script is executed.

by Chris Muller (ma.chris.m@gmail.com) at April 22, 2019 12:54 AM

April 21, 2019

squeaksource.com

Chip8-TSL.1

Chip-8 interpreter

by Thiago da Silva Lino (thiagolino@yahoo.com.br) at April 21, 2019 10:27 AM

April 17, 2019

squeaksource.com

FactorialContest-nice.9

Update for 2019 64bits Spur VM

- don't override bitCount, it's in all recent Squeak now
- fix bug of karatsubaTimes for negative Integer: it is not OK to bitShift: -8*half because bitShift emulates 2-complement.
- revise isLargeEnoughForKaratsuba for 64bits 2019 Spur VM: Karatsuba is not interesting under 600 bytes! Your mileage may vary (stack/cog/spur 32/64 bits...)

These are the new timings on my 2015 core i5 MacBookPro:

Smalltalk garbageCollect.
Time millisecondsToRun: [1 to: 3000 do: [:x | FactorialPrimeSwing new factorialOf: x]].
610 610

Smalltalk garbageCollect.
Time millisecondsToRun: [1 to: 3000 do: [:x | x jmbkn2Factorial]].
455 463

Smalltalk garbageCollect.
Time millisecondsToRun: [1 to: 3000 do: [:x | x jmbknFactorial]].
471 469

Smalltalk garbageCollect.
Time millisecondsToRun: [1 to: 3000 do: [:x | x jmbkFactorial]].
472 469

Smalltalk garbageCollect.
Time millisecondsToRun: [1 to: 3000 do: [:x | x jmbFactorial]].
467 466

Smalltalk garbageCollect.
Time millisecondsToRun: [1 to: 3000 do: [:x | x niceFactorial]].
705 698

Smalltalk garbageCollect.
Time millisecondsToRun: [1 to: 3000 do: [:x | x svckFactorial]].
639 632

Smalltalk garbageCollect.
Time millisecondsToRun: [1 to: 3000 do: [:x | x svcFactorial]].
687 681

Smalltalk garbageCollect.
Time millisecondsToRun: [1 to: 3000 do: [:x | x factorial]]
3588 3632


For huge numbers, Karatsuba variants start paying:

[FactorialPrimeSwing new factorialOf: 50000] timeToRun.
61 65
[50000 jmbkn2Factorial] timeToRun.
66 67
[50000 jmbknFactorial] timeToRun.
69 69
[50000 jmbkFactorial] timeToRun.
69 68
[50000 svckFactorial] timeToRun.
88 88
[50000 niceFactorial] timeToRun.
90 93
[50000 jmbFactorial] timeToRun.
124 124
[50000 svcFactorial] timeToRun.
243 245

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at April 17, 2019 10:38 PM

ArbitraryPrecisionFloat-nice.65

Avoid converting asFloat when comparing with inf

asFloat could overflow, and we want these to be true:

{
((1 asArbitraryPrecisionFloatNumBits: 53) timesTwoPower: 2000) ~= Float infinity.
((1 asArbitraryPrecisionFloatNumBits: 53) timesTwoPower: 2000) < Float infinity.
((-1 asArbitraryPrecisionFloatNumBits: 53) timesTwoPower: 2000) > Float infinity negated.
} reduce: #&

April 17, 2019 05:38 AM

April 16, 2019

source.squeak.org

Monticello-cmm.696

- Fix revisions of class definitions when there's another PackageInfo defined whose full name is only a prefix of the working copy the selected class belongs to.
- Check the local package-cache before hitting the server for operations where the ancestral UUID is known, such as diffing from the History list. Keep its allFileNamesCache up to date.

by Chris Muller (ma.chris.m@gmail.com) at April 16, 2019 03:44 AM

SMBase-cmm.141

Fix SMPackageRelease>>#newerThan: to account for the possibility that the automaticVersion's its comparing might be from different branches, which can't be compared via #<.

by Chris Muller (ma.chris.m@gmail.com) at April 16, 2019 02:12 AM

Collections-cmm.826

Restrict automatic type coercions in numerical operations to the domain of numbers only; Float, Integer, Fraction and ScaledDecimal. For objects outside the numerical domain such as Strings, Characters, Points, and other objects, it's desirable to require explicit coercion.

by Chris Muller (ma.chris.m@gmail.com) at April 16, 2019 01:08 AM

April 13, 2019

squeaksource.com

ConfigurationOfMorphicDraw-StephanEggermont.5

Make it load with newer compiler in Pharo 6.1

April 13, 2019 10:26 AM

April 12, 2019

source.squeak.org

Collections-fn.825

Just like strings, characters should convert themselves to an integer when involved in arithmetic with a number.

Example:
$c < 98.9 "false"
98.9 < $c "opened debugger, now returns true"

by Fabio Niephaus (code@fniephaus.com) at April 12, 2019 07:30 AM

April 10, 2019

source.squeak.org

ImageFormat-kks.35

Removed tests for 68004, 68021 formats since 68004 is no longer a base version number.

April 10, 2019 05:51 PM

ImageFormat-kks.34

Added support for images whose header begins 512 bytes into the file. Expanded comments to explain magic file use.

April 10, 2019 05:13 PM

April 08, 2019

source.squeak.org

Morphic-jr.1485

Change Git Infrastructure item to Git Browser

It will show Install Git Browser... when the latter is not installed.

Requires Installer-Core-jr.430

April 08, 2019 11:09 PM

Installer-Core-jr.430

Add method to both install and open the Git Browser

Also remove send of ensureLatestMetacello since Metacello will be loaded if required anyway.

April 08, 2019 11:06 PM

Environments-cmm.74

Keep and access Classes and Traits by their #name's logical value instead of the physical identity of the String object.

by Chris Muller (ma.chris.m@gmail.com) at April 08, 2019 07:29 PM

Monticello-cmm.66240

Monticello only requires monotonicity and uniqueness for its version numbers, not consecutiveness. When saving a new package, generate a unique, 6-digit versionNumber. Beginning approximately 2020-11-25T10:40:00+00:00, a 7th digit will appear -- no more than a local phone number -- which will be good until year 2038.

by Chris Muller (ma.chris.m@gmail.com) at April 08, 2019 07:28 PM

System-cmm.1059

Organize configuration scripts in the "Extending The System" workspace or SqueakMap.

by Chris Muller (ma.chris.m@gmail.com) at April 08, 2019 07:28 PM

Installer-Core-cmm.428

Allow installation of github projects via the scripts at the top in their readme files, without first having to manually ensure Metacello is installed.

Metacello new
baseline: 'NameOfTheProject';
repository: 'github://...';
load

by Chris Muller (ma.chris.m@gmail.com) at April 08, 2019 07:27 PM

Installer-Core-cmm.429

Allow installation of github projects via the scripts at the top of their readme files, without first having to manually ensure Metacello is installed.

Metacello new
baseline: 'NameOfTheProject';
repository: 'github://...';
load

by Chris Muller (ma.chris.m@gmail.com) at April 08, 2019 07:01 PM

April 07, 2019

source.squeak.org

Collections-nice.825

Try to improve some Interval of Float Behavior.

- change #last so that it agrees with (self at: self size)
Note that last behavior slightly changes for empty Interval: (3 to: 0) last is now 2 instead of 0 previously. I don't know of any code impacted, but it's not a completely neutral change

Note: this solves 2 out of the 3 failures of #testIntervalOfFloatLast... The last element might still overshoot the prescribed upper bound. I can also fix it, but implementation of #last is getting overkill.

- implement a ReversedInterval that lazily reverse an Interval of Float, and resolves #testIntervalOfFloatReversed.

The alternative would be resorting to an Array...

- renounce fuzzy inclusion test. As exhibited by #testSurprisingFuzzyInclusionBehavior, it creates more weirdness than it tries to solve. There will be two more test failing, asserting this fuzzy inclusion, but we can later change them.

by Nicolas Cellier (nicolas.cellier.aka.nice@gmail.com) at April 07, 2019 09:10 PM

Collections-nice.824

Implement Collection>>#log2, since it already responds to #ln and #log...

Correct a Pharoism in DefaultSortFunction comment, there is no #threeWayCompareTo: because we prefer the space-ship operator <=>

Correct a slip in LazyCharacterSet comment.

Let ({1. 3/2. 2} as: Interval) work as it should.

Remove Interval>>#remove: since it duplicates unecessarily super remove:ifAbsent: (which shouldNotImplement already).

Don't spend too much time sorting an Interval, it's already sorted.

by Nicolas Cellier (nicolas.cellier.aka.nice@gmail.com) at April 07, 2019 08:40 PM

CollectionsTests-nice.305

More and Less Interval tests - Part 2

- cleanup the testEquals
* remove redundant test vs Array: a single #testEqualsWithArray is enough
* make an explicit testEqualsWhenEmpty for empty Interval equality.
This is a feature required for Text selection support.
An empty Interval is used for marking cursor position when Text selection is empty.

- It should be possible to convert an Array with fractional arithmetic progression as Interval (#testAsIntervalWithFractionalProgression), though it's currently not the case at this time of writing

- add a case of surprising fuzzy-inclusion behavior (copyWithout:)

- document two additional weird behaviors of Interval of Float:
* testIntervalOfFloatEqual denies the common sense, and thus currently does not fail. It could as well assert and be an expected failure, but we will probably not resolve it.
* testIntervalOfFloatLast fails if last is not corrected. Unlike equal, it seems possible to resolve while preserving other Interval properties

by Nicolas Cellier (nicolas.cellier.aka.nice@gmail.com) at April 07, 2019 08:28 PM

April 04, 2019

source.squeak.org

System-cmm.1061

Metacello and GitInfrastructure tools are currently the best way to load projects hosted by github.com. Promote installation of these tools to the Tools menu.
While in there, make a couple of improvements to the Do menu.

by Chris Muller (ma.chris.m@gmail.com) at April 04, 2019 11:30 PM

System-dtl.1059

Update the Do menu in the world docking bar.

Move the ensureRecentMetacello and installGitInfrastructure entries down one category to allow emergencyCollapse and closeAllDebuggers to be in their expected position in the menu for the benefit of keyboard navigation.

If Monticello is present in the image, add "MCFileBasedRepository flushAllCaches", an obscure but frequently needed memory cleanup.

Update menus in the package postscript.

by David T. Lewis (lewis@mail.msen.com) at April 04, 2019 10:51 PM

Morphic-cmm.1484

Metacello and GitInfrastructure tools are currently the best way to load projects hosted by github.com. Promote installation of the these tools to the Tools menu.

by Chris Muller (ma.chris.m@gmail.com) at April 04, 2019 10:46 PM

Morphic-LB.1465

SystemWindow#replacePane:with: had an unexpected side effect changing the color of the pane put in place to transparent. This limited it's use as it is unwanted.

by Chris Muller (ma.chris.m@gmail.com) at April 04, 2019 09:59 PM

Morphic-cmm.1483

- Guard from image lockup when a list filtering event is processed prior to checking for #balloonText. Suspect PluggableListMorph>>#hoverRow: is the culprit.
- Merge fix from Morphic-LB.1465.

by Chris Muller (ma.chris.m@gmail.com) at April 04, 2019 09:58 PM

March 28, 2019

source.squeak.org

System-eem.1058

A long-needed refactor of vmStatisticsReportString into vmStatisticsReportOn:

by Eliot Miranda (eliot.miranda@gmail.com) at March 28, 2019 06:03 PM

TraitsTests-pre.19

Adds a test case for removing traits from a class by simply executing a class creation method without a trait composition. This does currently not yet work.

by Patrick Rein (patrick.rein@gmail.com) at March 28, 2019 02:30 PM

March 27, 2019

squeaksource.com

ODBC-LorenzoSchiavina.1

empty log message

March 27, 2019 10:41 AM

ConfigurationOfODBC-LorenzoSchiavina.2

empty log message

March 27, 2019 10:39 AM

ConfigurationOfODBC-LorenzoSchiavina.1

empty log message

March 27, 2019 08:07 AM

March 24, 2019

squeaksource.com

Collections.V3-dtl.823

Name: Collections-ul.823
Author: ul
Time: 22 March 2019, 12:04:40.596433 pm
UUID: 2fef1e34-e45a-4f70-bb7b-56aa1c610df9
Ancestors: Collections-pre.822

Fixed bug in Heap >> #upHeap:. When the first element of a Heap was removed, the index of the first object was not always updated.

by Dave Lewis (lewis@mail.msen.com) at March 24, 2019 10:18 PM

SBE-Quinto-ms.1

empty log message

by Martin Stromberg (martinstromberg@yahoo.se) at March 24, 2019 08:52 PM

March 22, 2019

source.squeak.org

Graphics-ms.407

Adds a preview morph for results of all BitBlt rules.

When first using BitBlt, it wasn't easy to understand the effects of the possible rules on pixel combinating for me.
I implemented two example methods which preview the effects of rule 0 to 41 (these are all, I believe) on quadratic existing forms with colors and 1 bit alpha channel (previewAllBitBltRules uses ToolIcons flag/collection) plus Forms with more alpha values (previewAllBitBltRulesWithAlpha uses ToolIcons flag and a Color red + 0.4 alpha preview). They generate a combined morph for all rules applied on these forms (scaled, because icons are small) and opens it in your hand. Internally, this morph can be generated for any rule, forms and scale. Rules which throw exceptions are replaced with a fallback form.

by David T. Lewis (lewis@mail.msen.com) at March 22, 2019 01:19 PM

MorphicExtras-ms.254

Adds a preview morph for results of all BitBlt rules.

When first using BitBlt, it wasn't easy to understand the effects of the possible rules on pixel combinating for me.
I implemented two example methods which preview the effects of rule 0 to 41 (these are all, I believe) on quadratic existing forms with colors and 1 bit alpha channel (previewAllBitBltRules uses ToolIcons flag/collection) plus Forms with more alpha values (previewAllBitBltRulesWithAlpha uses ToolIcons flag and a Color red + 0.4 alpha preview). They generate a combined morph for all rules applied on these forms (scaled, because icons are small) and opens it in your hand.
Internally, this morph can be generated for any rule, forms and scale. Rules which throw exceptions are replaced with a fallback form.

Now in the correct package (see http://forum.world.st/The-Inbox-Graphics-ms-407-mcz-td5097206.html ).
Thank you for your feedback!

by David T. Lewis (lewis@mail.msen.com) at March 22, 2019 01:18 PM

CollectionsTests-ul.303

Added a test for the Heap bug fixed in Collections-ul.823.

by Levente Uzonyi (leves@caesar.elte.hu) at March 22, 2019 11:09 AM

Collections-ul.823

Fixed bug in Heap >> #upHeap:. When the first element of a Heap was removed, the index of the first object was not always updated.

by Levente Uzonyi (leves@caesar.elte.hu) at March 22, 2019 11:09 AM

March 21, 2019

squeaksource.com

Compiler.V3-dtl.403

Name: Compiler-eem.403
Author: eem
Time: 19 March 2019, 11:58:47.238202 am
UUID: a0f07dce-0a58-422e-af37-32d5a3bd6546
Ancestors: Compiler-eem.402

Fixed yhree typos in a comment, and improved the class comments for ParseNodeEnumerator & subclass.

by Dave Lewis (lewis@mail.msen.com) at March 21, 2019 11:49 PM

Compiler.V3-dtl.402

Name: Compiler-eem.402
Author: eem
Time: 19 March 2019, 11:44:20.570473 am
UUID: 886de89c-a3ed-4fb5-a8ed-7f9bf78d69b6
Ancestors: Compiler-eem.401, Compiler-ul.401

Merge with Compiler-ul.401, eliminate undeclatred variable in ParseNodeWithPrecedingStatementEnumerator.

Name: Compiler-eem.401
Author: eem
Time: 19 March 2019, 9:28:16.827407 am
UUID: 7920c007-0974-48a7-b1b3-b4de923b90d4
Ancestors: Compiler-eem.400

Fix a slip in EncoderForSistaV1 class>>isTempStoreAt:in:, and fix a couple of typos nearby.

by Dave Lewis (lewis@mail.msen.com) at March 21, 2019 11:48 PM

source.squeak.org

Morphic-sjce.1465

Trying to open the debugger halo on the resulting window results in a MNU
Text>>truncateWithElipsisTo: in HaloMorph>>doDebug:with:

Trying to grab the window results in a MNU Text>>truncateTo:
in Morph>>nameForUndoWording that needs a similar change

March 21, 2019 09:43 PM

WebClient-Help-hjh.12

Replace Smalltalk with SmalltalkImage current.

by David T. Lewis (lewis@mail.msen.com) at March 21, 2019 12:04 PM

squeaksource.com

Compiler.V3-dtl.401

Name: Compiler-ul.401
Author: ul
Time: 16 March 2019, 11:56:29.899053 pm
UUID: 395adc27-f48e-484c-9097-5197ea3a0155
Ancestors: Compiler-eem.400

- fixed typo

by Dave Lewis (lewis@mail.msen.com) at March 21, 2019 12:37 AM

Collections.V3-dtl.822

Name: Collections-pre.822
Author: pre
Time: 20 March 2019, 8:05:20.383677 pm
UUID: 483c4461-cee4-4a4f-82d3-fbc03e7201cc
Ancestors: Collections-dtl.821

Adds #isMutator to Symbol which is analogous to asMutator.

by Dave Lewis (lewis@mail.msen.com) at March 21, 2019 12:36 AM

March 17, 2019

squeaksource.com

System.V3-dtl.1057

Name: System-eem.1057
Author: eem
Time: 16 March 2019, 12:25:59.281495 pm
UUID: af55a994-27d7-4ebe-84b6-d3f923523fc3
Ancestors: System-eem.1056

Decompose browseMethodsWithString:matchCase: to provide allMethodsWithString:matchCase:.

by Dave Lewis (lewis@mail.msen.com) at March 17, 2019 04:33 PM

System.V3-dtl.1056

Name: System-eem.1056
Author: eem
Time: 12 March 2019, 4:26:37.641499 pm
UUID: 5c24744b-c81e-460a-aca1-ce0099b23831
Ancestors: System-tpr.1055

Fix SystemNavigation>>allMethodsInCategory:

by Dave Lewis (lewis@mail.msen.com) at March 17, 2019 04:32 PM

Kernel.V3-dtl.1215

Name: Kernel-eem.1215
Author: eem
Time: 16 March 2019, 12:38:28.555296 pm
UUID: 9fa7a504-70d6-45ae-9514-d905578da5af
Ancestors: Kernel-eem.1214

Add CompiledMethod>>pragmasAt: for convenient access to multiple pragmas of the same pragma selector.

by Dave Lewis (lewis@mail.msen.com) at March 17, 2019 04:29 PM

KomServices-edc.23

I found portNumber could be still used

March 17, 2019 09:03 AM

March 12, 2019

squeaksource.com

TZ-Olson-dtl.16

Let #setLocalOffsetForTimeZone: work for older Chronology versions

by Dave Lewis (lewis@mail.msen.com) at March 12, 2019 10:58 AM

TZ-Olson-dtl.15

Move DateAndTime>>asPosixSeconds to TZ-Olson and use #perform: to allow it to compile in Pharo and older Squeak

by Dave Lewis (lewis@mail.msen.com) at March 12, 2019 10:31 AM

TimeZoneDatabase-Squeak-dtl.7

Move DateAndTime>>asPosixSeconds to TZ-Olson and use #perform: to allow it to compile in Pharo and older Squeak

by Dave Lewis (lewis@mail.msen.com) at March 12, 2019 10:31 AM

March 09, 2019

squeaksource.com

SBEQuintoAnat-AF.1

empty log message

by Anat (anat.fradin@gmail.com) at March 09, 2019 10:59 AM

March 04, 2019

squeaksource.com

Morph To Method-cbc.10

Don't populate owner instance in base morph - often World, sometimes other things that cause problems. Safe to ignore.

March 04, 2019 10:33 PM

February 27, 2019

squeaksource.com

Raven-rww.26

YELLOW 2 test failures. Try to fix 2 failing ThreeWayGranovetter tests.

by Robert Withers (robert.withers@protonmail.com) at February 27, 2019 01:06 AM

Raven-rww.26

YELLOW 2 test failures. Try to fix 2 failing ThreeWayGranovetter tests.

by Alan Pinch (alan.c.pinch@gmail.com) at February 27, 2019 01:05 AM

ParrotTalk-rww.27

add SendFramesBuffer>>flushFramesToSession: session and call it last in the SecurityOps>>installSession:stack:incoming:. Remove SendFramesBuffer>>bufferList.

by Alan Pinch (alan.c.pinch@gmail.com) at February 27, 2019 01:03 AM

ParrotTalk-rww.27

add SendFramesBuffer>>flushFramesToSession: session and call it last in the SecurityOps>>installSession:stack:incoming:. Remove SendFramesBuffer>>bufferList.

by Robert Withers (robert.withers@protonmail.com) at February 27, 2019 01:03 AM

February 26, 2019

squeaksource.com

Eagle-rww.1

flesh out some subclasses of SubjectiveSelf

by Alan Pinch (alan.c.pinch@gmail.com) at February 26, 2019 09:19 PM

ParrotTalk-rww.26

removed unused method temp variable: <encoder> in SecurityOps>>installOnSession: session stack: stack incoming:

by Alan Pinch (alan.c.pinch@gmail.com) at February 26, 2019 09:18 PM

ParrotTalk-rww.26

removed unused method temp variable: <encoder> in SecurityOps>>installOnSession: session stack: stack incoming:

by Robert Withers (robert.withers@protonmail.com) at February 26, 2019 09:18 PM

Ston-Tests-rww.35

fixed STONWriterTests>>testDictionaryWithComplexKeys

by Alan Pinch (alan.c.pinch@gmail.com) at February 26, 2019 09:15 PM

February 13, 2019

squeaksource.com

Collections.V3-dtl.820

Name: Collections-nice.820
Author: nice
Time: 12 February 2019, 11:56:35.262017 pm
UUID: bb383133-067c-4133-987b-c481a7de69c7
Ancestors: Collections-ul.819, Collections-cbc.813

Definitively abandon SequenceableCollection equality tests based on equal species.

Old behaviour can still be obtained thru hasEqualElements: but the default is to not try to support such trans-class equality feature because it is much too complex.

Particularly Interval are no more equal to Arrays with same sequence. We can thus optimize hash a bit more and fix the old bugs of equa objects with different hashes. Merge Collections-cbc.813 for this and rehashAll in postscript.

There are not so many classes concerned by this change, mainly RunArray, Interval and LinkedList:

Collection withAllSubclasses select: [:e | [e basicNew species ~= e] on: Error do: [false]]
-> an OrderedCollection(WeakRegistry LinkedList Interval ByteCharacterSet CharacterSetComplement LazyCharacterSet WideCharacterSet ShortRunArray Semaphore Mutex TextLineInterval WeakArray Monitor MCVersionName ByteSymbol WideSymbol)

We will have to change the tests that rely on such equality.

by Dave Lewis (lewis@mail.msen.com) at February 13, 2019 01:14 AM

Kernel.V3-dtl.1213

Name: Kernel-nice.1213
Author: nice
Time: 8 February 2019, 11:24:45.054968 pm
UUID: d7a472c9-49dd-4b1d-b73a-13b9c7c8d4c5
Ancestors: Kernel-tonyg.1212

Provide a logarithm in base 2: log2.
This (x log2) has an additional property that (x log: 2) has not: it is exact for exact powers of 2.

While implementing LogarithmicInterval, I recently wanted to use log: 2, and this was getting as bad as in Python. See https://stackoverflow.com/questions/931995/inaccurate-logarithm-in-python/54537441#54537441

I don't know if this feature is really worth it, but whether it ends up integrated or not, at least it demonstrates how easy it is to patch Squeak.

by Dave Lewis (lewis@mail.msen.com) at February 13, 2019 01:07 AM

February 12, 2019

squeaksource.com

LogarithmicInterval-nice.5

Abide to initializedInstance squeakism.
Let new fail like other Interval.
Don't ask super =, it brings nothing.

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at February 12, 2019 10:03 PM

GeometricInterval-nice.5

Abide to initializedInstance squeakism
Fix new error message (a bit too much copy/pasted from Interval)
Don't ask super =, it brings nothing.

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at February 12, 2019 10:02 PM

February 10, 2019

squeaksource.com

LogarithmicInterval-nice.4

includes: is same as super

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at February 10, 2019 09:26 PM

GeometricInterval-nice.4

includes: is same as super

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at February 10, 2019 09:26 PM

ImageSnapshot-dtl.3

Do not freeze the image if primitive support is not available. Handle the primitive failed error to ensure processing the startup list.

by Dave Lewis (lewis@mail.msen.com) at February 10, 2019 02:57 AM

February 09, 2019

squeaksource.com

CommandShell-dtl.97

Update for Cuis FileMan, use #withPathName instead of #pathName.

by Dave Lewis (lewis@mail.msen.com) at February 09, 2019 01:21 PM

CommandShell-Base-dtl.63

Update for Cuis FileMan, use #withPathName instead of #pathName.

by Dave Lewis (lewis@mail.msen.com) at February 09, 2019 01:21 PM

OSProcess-dtl.112

Update for Cuis FileMan, use #withPathName instead of #pathName.

by Dave Lewis (lewis@mail.msen.com) at February 09, 2019 01:20 PM

OSProcess-Base-dtl.66

Update for Cuis FileMan, use #withPathName instead of #pathName.

by Dave Lewis (lewis@mail.msen.com) at February 09, 2019 01:20 PM

OSProcess-Tests-dtl.17

Update for Cuis FileMan, use #withPathName instead of #pathName.

by Dave Lewis (lewis@mail.msen.com) at February 09, 2019 01:19 PM

WASM-edc.37

More bug fixes

February 09, 2019 09:34 AM

February 08, 2019

squeaksource.com

LogarithmicIntervalTests-nice.2

Document robustness to extreme range.

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at February 08, 2019 09:00 PM

LogarithmicInterval-nice.2

Review comment explaining the default base.

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at February 08, 2019 09:00 PM

GeometricIntervalTests-nice.2

Demonstrate that we can handle negative GeometricInterval.

Also document thru the expectedFailures, the limitations due to impossibility to represent the ratio in floating point for extreme range.

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at February 08, 2019 08:56 PM

GeometricInterval-nice.2

Provide a more robust size. Indeed, (start / stop) might underflow or overflow in floating point.

Remove remove: because #remove:ifAbsent: already shouldNotImplement at upper level.

Use isExact for testing the case of exact arithmetic.
Note about implementation of isExact: this is not very object oriented: we pretend to be omniscient and know how other objects will behave instead of delegating...

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at February 08, 2019 08:54 PM

LogarithmicInterval-nice.1

Provide a LogarithmicInterval specified by logarithm of bounds.

It is much like GeometricInterval, but is not able to generate negative intervals.

For large intervals, it is more robust numerically than GeometricInterval.

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at February 08, 2019 08:20 PM

LogarithmicIntervalTests-nice.1

Provide tests for LogarithmicInterval

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at February 08, 2019 08:17 PM

GeometricIntervalTests-nice.1

First SUnit tests for GeometricInterval

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at February 08, 2019 01:52 PM

GeometricInterval-nice.1

Port the GeometricInterval from VW Cincom public store (SYSEXT-GeometricInterval).

by nicolas cellier (nicolas.cellier.aka.nice@gmail.com) at February 08, 2019 01:49 PM

February 07, 2019

squeaksource.com

Time-PaulDeBruicker.54

Changes for Pharo7. It does not understand Object>>#ifNotNilDo: and Object>>#name

by Paul DeBruicker (pdebruic@gmail.com) at February 07, 2019 03:58 PM

WASM-edc.36

empty log message

February 07, 2019 01:50 PM

February 06, 2019

squeaksource.com

WASM-edc.35

empty log message

February 06, 2019 08:46 AM

February 05, 2019

squeaksource.com

WASM-edc.34

empty log message

February 05, 2019 09:43 PM

February 04, 2019

squeaksource.com

WASM-edc.32

More bugFixes

February 04, 2019 06:54 AM

WASM-edc.31

Bug fixes, solve more .wat now

February 04, 2019 06:05 AM

VMConstruction-Plugins-XDisplayControlPlugin.oscog-dtl.18

Restore the missed update from VMConstruction-Plugins-XDisplayControlPlugin-eem.12 that belongs in the oscog branch.

Name: VMConstruction-Plugins-XDisplayControlPlugin-eem.12
Author: eem
Time: 18 May 2017, 9:25:32.014743 am
UUID: aedd8b87-9628-4a9a-9d90-c0cde2cce9b9
Ancestors: VMConstruction-Plugins-XDisplayControlPlugin-eem.11

Avoid push/popRemappableOop on Spur when creating transient C strings by using remapOop:in:

by Dave Lewis (lewis@mail.msen.com) at February 04, 2019 03:11 AM

VMConstruction-Plugins-AioPlugin-dtl.24

AioPlugin 2.2.8
Merging the compatible updates from MConstruction-Plugins-AioPlugin-eem.18 and VMConstruction-Plugins-AioPlugin-eem.22.

by Dave Lewis (lewis@mail.msen.com) at February 04, 2019 01:24 AM

VMConstruction-Plugins-AioPlugin-dtl.23

Support establishing an oscog branch for Cog/Spur changes that may not be compatible. Resave starting with MConstruction-Plugins-AioPlugin-eem.16. Update version string to 2.2.7 to reflect prior changes.

by Dave Lewis (lewis@mail.msen.com) at February 04, 2019 01:24 AM

VMConstruction-Plugins-XDisplayControlPlugin-dtl.18

Merge VMConstruction-Plugins-XDisplayControlPlugin-eem.16

by Dave Lewis (lewis@mail.msen.com) at February 04, 2019 01:23 AM

VMConstruction-Plugins-XDisplayControlPlugin-dtl.17

Support establishing an oscog branch for Cog/Spur changes that may not be compatible. Resave starting with VMConstruction-Plugins-XDisplayControlPlugin-dtl.14.

by Dave Lewis (lewis@mail.msen.com) at February 04, 2019 01:23 AM

VMConstruction-Plugins-AioPlugin.oscog-dtl.23

Establish an oscog branch for AioPlugin, such that commits that depend on VMMaker.oscog features, or on recent compiler features in the host image, can be made to the VMConstruction-Plugins-AioPlugin.oscog branch. This is consistent with naming convention for VMMaker.oscog and OSProcessPlugin.oscog.

The original VMConstruction-Plugins-AioPlugin branch continues to be maintained.

by Dave Lewis (lewis@mail.msen.com) at February 04, 2019 01:21 AM