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

September 13, 2021

source.squeak.org

Kernel-eem.1411

Proposed fix for CompiledCode>>#allLiteralsDo: by adding pushSpecialConstant:/sendSpecial:numArgs:.

Get the bytecode set specific interpretNextInstructionFor: implementations to send sendSpecial:numArgs: and pushSpecialConstant: for special selector sends and implicit literal bytecodes. Insulate existing InstructionClient subclasses by introducing ImplicitLiteralInstructionClientHook as InstructionClient's superclass which implements pushSpecialConstant:/sendSpecial:numArgs: as sends of pushConstant:/send:super:numArgs:. Implement pushSpecialConstant:/sendSpecial:numArgs: in Context. Compiler-eem.460 implements these for the Decompiler.

September 13, 2021 05:28 AM

Kernel-eem.1410

Since Compiledmethod>>= is true if method classes differ, a COmpiledMethod's hash must not tae methodClass into account.

by Eliot Miranda (eliot.miranda@gmail.com) at September 13, 2021 05:24 AM

Compiler-eem.460

Decompiler mods for proposed fix for CompiledCode>>#allLiteralsDo: by adding pushSpecialConstant:/sendSpecial:numArgs:.

September 13, 2021 05:22 AM

Collections-eem.958

Faster at:ifPresent:

by Eliot Miranda (eliot.miranda@gmail.com) at September 13, 2021 05:21 AM

BytecodeSets.spur-eem.81

Proposed fix for CompiledCode>>#allLiteralsDo: by adding pushSpecialConstant:/sendSpecial:numArgs:.

by Eliot Miranda (eliot.miranda@gmail.com) at September 13, 2021 05:20 AM

September 12, 2021

squeaksource.com

Doc-tty.17

add the 'pages' method to the CustomHelp and it now displays as it should.

by tty (gettimothy@zoho.com) at September 12, 2021 09:26 AM

Doc-tty.16

I am now able to compile the CustomHelp containing the HelpTopics .

The display in the HelpBrowser is not working...the class appears, the pages do not.....and I just figured out why..the pages method is missing!

I need to recurse to compile subclasses and include them in the pages.

good progress.

by tty (gettimothy@zoho.com) at September 12, 2021 09:08 AM

source.squeak.org

FFI-Pools-eem.39

Revised suggestion for adding 16 & 32 bit character types that preserves backwards compatibility.

by Eliot Miranda (eliot.miranda@gmail.com) at September 12, 2021 06:39 AM

September 11, 2021

source.squeak.org

VMMaker.oscog-eem.3068

ThreadedFFIPlugin: pass any kind of non-pointer object to non-byte */char * args. We could insist on void *, but let's see how we get on with this.

by Eliot Miranda (eliot.miranda@gmail.com) at September 11, 2021 11:17 PM

squeaksource.com

Doc-tty.15

Its ALIVE!!!

Stage commit.

I can select a (modifed) TerseGuide.org file with the Filechooser and parse it and display it directly in the HelpBrowser.

The modification required is standard ORG mode markup.

of

#+BEGIN_EXAMPLE
foo bar biz
#+END_EXAMPLE

I think I will make this standard on output.

by tty (gettimothy@zoho.com) at September 11, 2021 11:03 AM

September 10, 2021

source.squeak.org

Kernel-ul.1411

- let all Numbers respond to #isPowerOfTwo. - removed Integer >> #isPowerOfTwo because it was not used: all subclasses implement that method

by Levente Uzonyi (leves@caesar.elte.hu) at September 10, 2021 01:55 PM

August 27, 2021

source.squeak.org

VMMaker.oscog-mt.3049

Merge upstream VMMaker.oscog-eem.3048 and update src paths to match Eliot's suggestion: https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/573#issuecomment-905099419

by Eliot Miranda (eliot.miranda@gmail.com) at August 27, 2021 05:06 PM

squeaksource.com

StoreBrescianini-LorenzoSchiavina.1

empty log message

August 27, 2021 02:45 PM

source.squeak.org

Kernel-mt.1413

Rewrites last change to make it faster again. Thanks to Stephan (stlu)!

August 27, 2021 08:20 AM

Kernel-mt.1412

Fixes rounding for negative receivers and negative arguments. Minor slow-down due to extra sign checks.

August 27, 2021 08:16 AM

Kernel-mt.1411

Move the #round(Up|Down)To: changes down to Integer to not slow-down rounding for Float and Fraction. This also speeds it up a tiny bit more because it is now "inlined" without the extra send to #round(Up|Down)ToInteger:.

Thanks to Levente (ul) for the suggestion! (http://lists.squeakfoundation.org/pipermail/squeak-dev/2021-August/216272.html)

14x speed up of #roundTo: using the same strategy.

[65 roundUpTo: 64] bench
AFTER '31,000,000 per second. 32.2 nanoseconds per run. 0 % GC time.'
BEFORE '2,120,000 per second. 472 nanoseconds per run. 0.73985 % GC time.'

August 27, 2021 06:38 AM

Kernel-mt.1410

Adds missing changes in #roundUpTo:.

August 27, 2021 06:01 AM

August 26, 2021

squeaksource.com

System.V3-dtl.1241

Name: System-mt.1241
Author: mt
Time: 25 August 2021, 2:20:46.973495 pm
UUID: 969fdd6d-dc9e-2b42-aa0b-fb1c8e40d63a
Ancestors: System-mt.1240

Fixes issue in space tally for SharedPool pools.

by Dave Lewis (lewis@mail.msen.com) at August 26, 2021 09:52 PM

Collections.V3-dtl.954

Name: Collections-dtl.954
Author: dtl
Time: 26 August 2021, 5:06:44.899886 pm
UUID: 62e50672-2876-46a2-8959-6d6eea2cc1e8
Ancestors: Collections-eem.953

Add SOH (start of heading) to the list of recognized separator characters, per follow up disscussion from Collections-pre.857. Rationale explained in http://lists.squeakfoundation.org/pipermail/squeak-dev/2019-October/204555.html

by Dave Lewis (lewis@mail.msen.com) at August 26, 2021 09:49 PM

source.squeak.org

Collections-dtl.954

Add SOH (start of heading) to the list of recognized separator characters, per follow up disscussion from Collections-pre.857. Rationale explained in http://lists.squeakfoundation.org/pipermail/squeak-dev/2019-October/204555.html

by David T. Lewis (lewis@mail.msen.com) at August 26, 2021 09:06 PM

Kernel-mt.1409

8x speed up in #roundUpTo: and #roundDownTo: for integer arguments due to avoiding the creation of intermediate fractions, which also avoids extra GC time.

Thanks to Stephan (stlu) for the idea!

[65 roundUpTo: 64] bench
AFTER '39,500,000 per second. 25.3 nanoseconds per run. 0 % GC time.'
BEFORE '5,180,000 per second. 193 nanoseconds per run. 1.67966 % GC time.'

[65 roundDownTo: 64] bench
AFTER '45,900,000 per second. 21.8 nanoseconds per run. 0 % GC time.'
BEFORE '5,590,000 per second. 179 nanoseconds per run. 2.29908 % GC time.'

Needs testing and review. Known issue: "65.0 roundUpTo: 64" now returns "128.0" but used to return "128".

August 26, 2021 09:43 AM

August 25, 2021

source.squeak.org

VMMaker.oscog-mt.3049

Merge upstream VMMaker.oscog-eem.3048 and update src paths to match Eliot's suggestion: https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/573#issuecomment-905099419

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at August 25, 2021 04:08 PM

ToolBuilder-Kernel-mt.146

Clarify commentary of openToolsAttachedToMouseCursor preference.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at August 25, 2021 12:53 PM

System-mt.1241

Fixes issue in space tally for SharedPool pools.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at August 25, 2021 12:20 PM

Services-Base-mt.71

Make "create new service"-service not raise a syntax error when cancelled. Remove it from the method-list menu.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at August 25, 2021 12:13 PM

Monticello-mt.751

Removes dependecy from Services package. Implement "browse revisions" hooks via simple menu extensions in CodeHolder.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at August 25, 2021 12:10 PM

August 12, 2021

source.squeak.org

Regex-Tests-Core-tobe.13

Complements Regex-Core-tobe.60

August 12, 2021 09:28 AM

Regex-Core-tobe.60

When an escaped character appeared in a charset, we did not handle adjacent ranges correctly

See RxParserTest>>testCharacterSetWithEscapedAndRange for examples.

August 12, 2021 09:27 AM

FFI-Callbacks-mt.26

Ports callback support for ARM64v8 from Alien project.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at August 12, 2021 09:21 AM

FFI-Kernel-mt.198

Adds preference to opt-out from specific integer primitives, which yields better performance when the FFI plugin does not yet have those new primitives. :-) And it allows for simpler benchmarking.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at August 12, 2021 08:40 AM

FFI-CallbacksTests-mt.5

Adds test for recent bugfixes.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at August 12, 2021 07:54 AM

FFI-Tests-mt.58

Adds test for recent bugfixes.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at August 12, 2021 07:53 AM

August 11, 2021

squeaksource.com

SBE-Quinto-JT.2

by Joseph Turco (italian.pepe.32@gmail.com) at August 11, 2021 10:12 PM

source.squeak.org

FFI-Kernel-eem.197

Fix three mistakes in the new ByteArray integer accessing primitive definitions.

by Eliot Miranda (eliot.miranda@gmail.com) at August 11, 2021 06:27 PM

FFI-Kernel-mt.196

Fixes a remaining issue with ExternalType class >> #initialize. Callback tests did not pass after that. Now they do.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at August 11, 2021 01:02 PM

FFI-Tests-mt.57

Avoid requesting author initials during tests.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at August 11, 2021 11:42 AM

FFI-Tests-mt.56

Array types of unknown size do share alignment properties of their content type even if they cannot be used anywhere. Only their pointer types do. Yet, being consistent in calculating the #byteAlignment makes life easier in other parts of the system.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at August 11, 2021 11:36 AM

FFI-Kernel-mt.195

Fixes bug about "Cannot compute byteAlignment" that occurred when opening an image on one platform that was saved on another.

You can now both use #initialize or #resetAllTypes to update all types when atomics changed. The former preserves object identity, the later needs to be used when changing the amount of atomics or when migrating from a rather old FFI installation.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at August 11, 2021 11:30 AM

FFI-Kernel-mt.194

Code clean-up and refactoring:
- Rename ...withAccessors: to ...generateAccessors:
- Rename policy #generated to #ifGenerated
- Rename policy #absent to #ifAbsent
- Deprecate #compileFields and #compileFields: in favor if #defineFields and #defineFields:
- Add #defineChangedFields(:), which uses #hasFieldLayoutChanged: and thus distinguishes itself from #defineFields(:)
- After code loading or class reshaping, call #triggerDefineAllChangedFields instead of #triggerDefineAllFields
- Remove obsolete #byteSize from ExternalStructure class; see its instance side

Note that this also fixes a regression, that is, let #defineAllFields and #defineAllChangedFields work as expected.

Note that #defineFields(:) will always compile the field spec and generate (missing) field accessors #ifGenerated.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at August 11, 2021 08:32 AM

August 10, 2021

squeaksource.com

ParrotTalk-rww.64

refactor SessionOperations

by Robert Withers (rabbit@churchofthesacrifice.org) at August 10, 2021 01:38 PM

ParrotTalk-rww.64

refactor SessionOperations

by Robert Withers (rabbit@churchofthesacrifice.org) at August 10, 2021 01:38 PM

ThunkStack-rww.38

refactor SessionOperations

by Robert Withers (rabbit@churchofthesacrifice.org) at August 10, 2021 01:38 PM

ThunkStack-rww.38

refactor SessionOperations

by Robert Withers (rabbit@churchofthesacrifice.org) at August 10, 2021 01:37 PM

August 09, 2021

source.squeak.org

VMMaker.oscog-eem.3033

Cogit/AndreasSystemProfiling: fix major slip in genCheckForProfileTimerTick:; only take a sample if nextProfileTick > 0. primitiveFlushExternalPrimitives. primitiveUnloadModule & primitiveProfileSemaphore can also endure code movement and need to be side-ways called. Make sure ceActivateFailingPrimitiveMethod: gathers profile samples when profiling. Nuke ceCheckProfileTick and replace it by ceTakeProfileSample: which interpeets null as attributing to newMethod.

Interpreter: abstract comparing a Smalltalk oop aganst a C string.
Slng: eliminate warnigns of liveRegisters shadowing, and of repeated removals of the memory variable.

by Eliot Miranda (eliot.miranda@gmail.com) at August 09, 2021 08:36 PM

VMMakerUI-eem.45

Fix the extra halt on hitting proceed in the click step dialog.

by Eliot Miranda (eliot.miranda@gmail.com) at August 09, 2021 08:02 PM

squeaksource.com

OTAR-jrm.12

The logic to limit recording to two tuners at a time has been tested and implimented. File name construction was modified to put season/episode data ahead of episode name so that file sorting comes out in S/E order.

by John-Reed Maffeo (jrmaffeo@gmail.com) at August 09, 2021 07:54 PM

source.squeak.org

FFI-Kernel-mt.193

Fix bug in compilation order of ExternalStructure fields.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at August 09, 2021 05:13 PM

FFI-Kernel-mt.192

Fix typo. Sorry for the noise.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at August 09, 2021 04:52 PM

FFI-Kernel-mt.191

Fixes several code-loading bugs around ExternalStructure.

#doneCompiling needs to recompile/redefine *all* fields. The entire hierarchy of ExternalStructure. Note that #doneCompiling is also currently the hook for loading the methods #fields or #originalTypeName via Monticello. We cannot know the effects of any changed field spec. Local re-compilation/re-definition will not do it.

Therefore, offer a simple way to ensure that re-compilation is only done once for multiple changed field spec. Rely on deferred UI messages. In a CI setting, #tryDefineAllFIelds might need to be called after loading the code. In an interactive setting, this won't be necessary because of the UI process.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at August 09, 2021 04:50 PM

FFI-Kernel-mt.190

Improves initialization of type aliases during initial code loading. Note that "self defineFields" is still required after changing/implementing #originalTypeName in the alias' referentClass.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at August 09, 2021 03:54 PM

FFI-Pools-mt.32

Fix package preamble to declare known class names upfront to avoid unnecessary warnings in the Transcript.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at August 09, 2021 02:09 PM

August 03, 2021

source.squeak.org

VMMaker.oscog-eem.3019

Cog: use symbolic constants for Spur primitive metadata manipulation.
Refactor linkExternalCall:ifFail: into linkExternalCall:errInto: so it doesn't have to be inlined.
Fix mapToBytecodePCIfActivationOfExternalMethod: to asvoid an assert fail for an interpreter frame activation of an external method.
Use faster length accessors (numSlotsOf: numBytesOfBytes:) in a few places.

Reorder teh storing of newMethod and the setting of stack pointers in compileOnStackExternalPrimitive:flags:, as well as making an invariant on VarBase clear.
CroquetPlugin: simulate ioGatherEntropy:_:, along with a hook to supply constant entropy via InitializationOptions.

by Eliot Miranda (eliot.miranda@gmail.com) at August 03, 2021 08:02 AM

VMMaker.oscog-tpr.3018

Merge Ben Avison's minor changes that help support the improvements he made for the ARM64 bitblt

by tim Rowledge (tim@rowledge.org) at August 03, 2021 02:13 AM

VMMaker.oscog-eem.3017

CroquetPlugin: Oops. Add the new export directive to primitiveTriBoxIntersects.

by Eliot Miranda (eliot.miranda@gmail.com) at August 03, 2021 01:09 AM

VMMaker.oscog-eem.3016

Slang: Fix a regression with plugin generation on simplifying emitExportsOn: now that accessor depths are computed earlier.

by Eliot Miranda (eliot.miranda@gmail.com) at August 03, 2021 12:57 AM

VMMaker.oscog-eem.3015

Have the CroquetPlugin primitives use the FastCPrimitiveFlag FastCPrimitiveAlignForFloatsFlag flags. Use the methodReturnFoo: protocol.

by Eliot Miranda (eliot.miranda@gmail.com) at August 03, 2021 12:44 AM

August 02, 2021

source.squeak.org

VMMaker.oscog-eem.3014

Have the FloatArray/Math plugin primitives use the FastCPrimitiveFlag FastCPrimitiveAlignForFloatsFlag flags. Use the methodReturnFoo: protocol. Surround Spur metadata with #if SPURVM.

In isCodeCompactingPrimitiveIndex: explain why the process switch primitives are not included.

by Eliot Miranda (eliot.miranda@gmail.com) at August 02, 2021 10:34 PM

FFI-Kernel.terf-eem.188

fix another variable shadowing warning

by Eliot Miranda (eliot.miranda@gmail.com) at August 02, 2021 06:26 PM

FFI-Kernel.terf-eem.187

Performance:
- cache an ExternalStructure class's externalType in a class inst var.
- directly allocate an ExternalStructure[Type] using self byteSize rather than deferring to the externalType.

Minor: avoid variable shadowing warnings in compileStructureSpec:withAccessors:, compileTypeAliasSpec:withAccessors:, & maybeCompileAccessor:withSelector:.

by Eliot Miranda (eliot.miranda@gmail.com) at August 02, 2021 06:15 PM

VMMaker.oscog-eem.3013

Eliminate a Slang warning.

by Eliot Miranda (eliot.miranda@gmail.com) at August 02, 2021 06:35 AM

VMMaker.oscog-eem.3012

Cogit: Fix a Slang slip with CogARMv8Compiler>>computeMaximumSize. USe SP rather than NativeSPReg within CogARMv8Compiler, as NativeSPReg is really for the outside world (the Cogit's world).

by Eliot Miranda (eliot.miranda@gmail.com) at August 02, 2021 06:22 AM

VMMaker.oscog-eem.3011

Cogit: Get the stack adjustment after primitive success right for FastCPrimitiveFlag primitives, with or without the FastCPrimitiveAlignForFloatsFlag.

by Eliot Miranda (eliot.miranda@gmail.com) at August 02, 2021 05:51 AM

August 01, 2021

source.squeak.org

VMMaker.oscog-eem.3010

Support a FastCPrimitiveAlignForFloatsFlag to accompany FastCPrimitiveFlag. Use the facility in primitiveFFI{Double,Float}At[Put]. On win32 clang emits instructions that insist on a more aligned stack (in this commit I'm hoping 16 byte alignment is sufficient; it may prove to be more).

Hence identify fast machine code primitives with the FastCPrimitiveUseCABIFlag flag, refactor compileOnStackExternalPrimitive: to compileOnStackExternalPrimitive:flags:, extend the set of PrimCall flags, etc.

Remember to set the native stack pointer for a FastCPrimitive on ARMv8. This is almost certainly the cause of current Cog crashes on ARMv8.

Simulation:
Make addressOf:put: support multiple byte writes. It will call the put block once for every byte, but the last one will at least include all the data written. This allows primitiveFFI{Double,Float}At[Put] to simulate correctly.

In-Image Compilation: take baby steps towards supporting in-image compilation of FastCPrimitive methods. The issue is how to get functionPointerForCompiledMethod:primitiveIndex:primitivePropertyFlagsInto: to work with the in-image framework. This probably needs CurrentImageCoInterpreterFacade to have a CurrentImageObjectMemoryFacade to intercept memory accesses.

by Eliot Miranda (eliot.miranda@gmail.com) at August 01, 2021 10:04 PM

squeaksource.com

SBE-Quinto-andyf.1

empty log message

by Andy (andifilchev@gmail.com) at August 01, 2021 11:08 AM

source.squeak.org

VMMaker.oscog-eem.3009

Slang: fix bug in copying of TBraceCaseNode, which was forgetting to do any kind of copy at all. This caused destructive update of the parse tree of ThreadedX64SysVFFIPlugin>>#ffiCalloutTo:SpecOnStack:in: when computing its accessor depth.

by Eliot Miranda (eliot.miranda@gmail.com) at August 01, 2021 05:06 AM

VMMaker.oscog-eem.3008

And in computing accessor depths at the right time make sure to use a TMethod's smalltalkSelector to not be confused by smart syntax.

by Eliot Miranda (eliot.miranda@gmail.com) at August 01, 2021 03:34 AM

VMMaker.oscog-eem.3007

Spur: Fix a bad bug with computing accessor depths. Exported primitives in the StackInterpreter and suclasses had their accessor depths computed after inlining, which is too late. Compute and cache accessor depths before inlining. Fix a bad regression in primitiveAccessorDepthForExternalPrimitiveMethod:. Now that this needs a shift to eliminate the primitive flags, it must use a signed shift.

Add VM parameter 76 to answer the minimumUnusedHeadroom on a stack page. This is useful in checking that a FastCPrimitiveFlag primitive has not consumed too much stack.

by Eliot Miranda (eliot.miranda@gmail.com) at August 01, 2021 03:25 AM

July 31, 2021

source.squeak.org

VMMakerUI-eem.42

More robustness for updating in the presense of first version packages.

by Eliot Miranda (eliot.miranda@gmail.com) at July 31, 2021 11:16 PM

July 26, 2021

source.squeak.org

FFI-Kernel-eem.182

Provide [u]int{8,16,32,64}At:[put:] accessors using new primitives in SqueakFFIPrims (failing to the old integerAt:[put:]size:signed: API).

Clarify that these accessors do (& always have) access integers in the platform's native order.

Allow ffiAtomicRead: & ffiAtomicWrite: pragmas to take symbols as well as arrays of symbols. Why? Because in time, with the new primtives, we will be able to discard the old slow integerAt:put:size:signed: API and this is the only one that needs the array facilities.

Use symbols for the primitive pragmas; in the compiled method module and primitive funciton are symbols anyway.

by Eliot Miranda (eliot.miranda@gmail.com) at July 26, 2021 07:02 PM

VMMaker.oscog-eem.2999

Use the new FFI integer access primitives for VMMaker's extensions to ByteArray.

by Eliot Miranda (eliot.miranda@gmail.com) at July 26, 2021 06:51 PM

VMMaker.oscog-eem.2998

ThreadedFFIPlugin: Implement 1,2,4, & 8 byte signed & unsigned integer accessors for ExternalAddress & ByteArray. Mark as many primitives as possible with the FastCPrimitiveFlag. Avoid testing failed as much as possible (integerness is handled with macros inside generated plugin code).

by Eliot Miranda (eliot.miranda@gmail.com) at July 26, 2021 06:14 PM

VMMaker.oscog-eem.2997

Fix stack delta in primitiveUnloadModule on Cog.

by Eliot Miranda (eliot.miranda@gmail.com) at July 26, 2021 03:18 AM

VMMaker.oscog-eem.2996

Oops; can't use an internal selector in MiscPrimitivePlugin.

by Eliot Miranda (eliot.miranda@gmail.com) at July 26, 2021 03:01 AM

VMMaker.oscog-eem.2995

Oops! Don't attempt to compute accessr depths for exported VM methods that aren't primitives.

by Eliot Miranda (eliot.miranda@gmail.com) at July 26, 2021 02:15 AM

Cog-eem.438

Fix disassembling the ARMv8's prefetch instruction.

by Eliot Miranda (eliot.miranda@gmail.com) at July 26, 2021 01:41 AM

VMMaker.oscog-eem.2994

Cog: Implement calling named primitives on the Smalltalk stack if the primitive's export:flags: pragma so specifies. Spur only.

A named primitive can now export itself with metadata thusly:
<export: true flags: #FastCPrimitiveFlag>
Most of the LargeIntegersPlugin primitives now do this along with all teh MiscPrimitivePlugin primitives.

On Spur arrange that these primitives are invoked on the Smalltalk stack, using the standard stackPointer/argumentCount/primErrorCode primitive convention. [A future extension may be to get Slang to implement a conventioanl C function taking all operands as parameters; this can be invoked with less overhead, being able to avoid setting stackPointer/argumentCount/primErrorCode]. This depends on a platforms change where ioLoadFunction:From:AccessorDepthInto: is replaced with ioLoadFunction:From:MetadataInto:.

Discard the old support for rebinding external primtiives in machine code (externalPrimCallOffsets et al). Instead make sure that any and all contexts for external primitives are divorced and have bytecode PCs whenever a module is unloaded. Unloading is essentially a development time operation so it being slow is not an issue. Getting rid of the rebinding support that allowed external primitive cog methods to revert to invoking primtiiveExternalCall on unload, simplifies supporting multiple plugin calling conventions. This also eliminates the truly horrible postCompilationHook.

Extend the support used to flush methods when setting/unsetting the "do mixed arithmetic" control (VM parameter 75) to provide both that toggle and the flush external primitives functionality.
1. Refactor the divorce fncitonality to take a criterion; divorceMachineCodeFramesWithMachineCodePrimitiveMethod becomes divorceAllFramesSuchThat:, and can take isMachineCodeFrameWithCogMethod: & isMachineCodeFrameForExternalPrimitiveMethod: as criteria.
2. Refactor and simplify the Cogit unlinking API. unlinkSendsToMachineCodePrimitiveMethodsAndFreeIf: becomes unlinkSendsToMethodsSuchThat:AndFreeIf:, and can use e.g. cogMethodHasMachineCodePrim: and cogMethodHasExternalPrim: as criteria. Type mapFor:performUntil:arg:;s arg parameter as CogMethod *; it almost always is.

Refactor primitiveExternalCall into linkExternalCall:ifFail:, which allows CoInterpreter>>#functionPointerForCompiledMethod:primitiveIndex:primitivePropertyFlagsInto: to link an external method to find its metadata, and arranges (should arrange) that the Cogit will always be compiling a call direct to the target primtiive method.

CogARMv8Compiler: fix a bug in concretizePrefetchAw that produced a read rather than a prefetch.

Simplify the module listing & unloading primitives, and make sure they simulate. N.B. Smalltalk unloadModule: #FilePlugin will cause lots of failures in the FilePlugin on reloading because the file descriptors are not preserved across the unload/reload, unlike the real OS. This could be done e.g. by stashing them in IntializationOptions.

This feels like a significant change. Review and/or hard testing appreciated.

by Eliot Miranda (eliot.miranda@gmail.com) at July 26, 2021 01:40 AM

July 25, 2021

source.squeak.org

Kernel-eem.1408

Make it more convenient to move declarations into SharedPools.

by Eliot Miranda (eliot.miranda@gmail.com) at July 25, 2021 05:23 PM

July 24, 2021

source.squeak.org

VMMaker-dtl.427

VMMaker 4.19.10
Unit tests and implemention for the _: argument passing convention when translating a method send to a C function in generated code. Plugins shared with oscog e.g. B3D use this convention in recent versions in order to avoid use of CCode: for calls to external C functions.

by David T. Lewis (lewis@mail.msen.com) at July 24, 2021 11:22 PM

VMMaker.oscog-eem.2993

cogCodeSize should be unsigned, at least to match allocateJITMemory

by Eliot Miranda (eliot.miranda@gmail.com) at July 24, 2021 09:48 PM

July 17, 2021

source.squeak.org

Kernel-ct.1408

Proposal: Show nested exception in the description of BrokenPromise.

July 17, 2021 06:21 PM

July 16, 2021

source.squeak.org

VMMaker.oscog-eem.2987

Get rid of a compilation warning on 64 bits in the RePlugin.

by Eliot Miranda (eliot.miranda@gmail.com) at July 16, 2021 05:01 PM

July 15, 2021

squeaksource.com

System.V3-dtl.1238

Name: System-mt.1238
Author: mt
Time: 6 July 2021, 2:31:04.816497 pm
UUID: 27e22442-c577-47a1-9746-f2078e38154c
Ancestors: System-eem.1237

Adds query to access last-modified timestamp for TravisCI badge.

by Dave Lewis (lewis@mail.msen.com) at July 15, 2021 11:42 PM

Kernel.V3-dtl.1407

Name: Kernel-eem.1407
Author: eem
Time: 9 July 2021, 2:46:18.688883 pm
UUID: 48a520fa-d6a2-44fa-8508-3405e7e0b8b9
Ancestors: Kernel-mt.1406

Have scanForInstructionSequence: descend into full blocks. Eliminate cases handled by otherwise clause in installVirtualKeyTable. Add error code to resue primitive invocation.

by Dave Lewis (lewis@mail.msen.com) at July 15, 2021 11:32 PM

Kernel.V3-dtl.1406

Name: Kernel-mt.1406
Author: mt
Time: 5 July 2021, 10:40:27.254527 am
UUID: d14ccb5a-8347-9b44-b428-27b8e64b8637
Ancestors: Kernel-mt.1405

To Delay, adds #busyWait for more precise waits on delays shorter than 50 milliseconds.

Complements Chronology-Core-mt.71.

by Dave Lewis (lewis@mail.msen.com) at July 15, 2021 11:30 PM

Collections.V3-dtl.952

Name: Collections-mt.952
Author: mt
Time: 5 July 2021, 11:33:42.546805 am
UUID: f848913c-5ee8-e349-8b6d-3646fb60c7b0
Ancestors: Collections-ct.951

Now that the simple/faster version of #take: was pushed down to ReadStream, do the same for ReadWriteStream.

Note that we still have to figure out whether we can set the readLimit from the beginning in those ReadWriteStreams.

Also see:
http://lists.squeakfoundation.org/pipermail/squeak-dev/2021-June/215910.html
http://lists.squeakfoundation.org/pipermail/squeak-dev/2021-July/215958.html

by Dave Lewis (lewis@mail.msen.com) at July 15, 2021 11:27 PM

Collections.V3-dtl.951

Name: Collections-ct.951
Author: ct
Time: 30 June 2021, 11:28:40.378415 pm
UUID: 20041ac2-26ea-5547-a7df-b98ad4b192d6
Ancestors: Collections-mt.945

Fixes Stream >> #take:. Unlike in #any:, we must not return nil values from #next here but the enumeration earlier. However, we can keep the fast behavior for ReadStreams in which #next: automatically stops the enumeration at the end of the receiver. See CollectionsTests-ct.361.

Supersedes Collections-ct.950. Thanks to Marcel for the fast review!

by Dave Lewis (lewis@mail.msen.com) at July 15, 2021 11:25 PM

July 05, 2021

source.squeak.org

Chronology-Core-mt.70

Merges latest fixes from Chronology-Core-dtl.68, after the update bug was fixed in (the kind of branch'd) Chronology-Core-mt.69.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at July 05, 2021 07:01 AM

Chronology-Core-mt.69

Stop using classVar InitializeFromPrimitive before it gets removed in Chronology-Core-dtl.67.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at July 05, 2021 06:58 AM

July 04, 2021

source.squeak.org

Chronology-Core-dtl.68

Merge Chronology-Core-ct.52

The 'Z' format in Java's SimpleDateFormat is documented as support for RFC 822 time zone specifications (used in email), whereas our DateAndTime class>>readFrom: is used to parse ISO 8601 format date strings. So on the face of it, this enhancement seems out of place for the Squeak parser. However, if we can believe Wikipedia, it would also be considered as a valid ISO 8601 offset specifier. Merged.

References:
https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html
https://en.wikipedia.org/wiki/ISO_8601#Time_offsets_from_UTC

by David T. Lewis (lewis@mail.msen.com) at July 04, 2021 08:17 PM

Chronology-Core-ct.52

Extends DateAndTime readFrom: to accept offset strings without colon. For example, java's zzzz format gives you such a string.

Test will be added on request.

by David T. Lewis (lewis@mail.msen.com) at July 04, 2021 08:14 PM

July 03, 2021

source.squeak.org

Chronology-Core-dtl.67

Cruft removal. DateAndTime no longer needs to be in the startUp list. The canInitializeFromPrimitive workaround is no longer needed. Do not use the no-argument call to primitiveUtcWithOffset, which works fine but is easier to understand in the image if we always use a single primitive interface.

by David T. Lewis (lewis@mail.msen.com) at July 03, 2021 09:38 PM

squeaksource.com

System.V3-dtl.1237

Name: System-eem.1237
Author: eem
Time: 2 July 2021, 6:13:21.540315 am
UUID: 30d3cf8e-708e-4830-86da-21d106f44ba8
Ancestors: System-eem.1236

Fix MessageTally class>>#tallySends:

by Dave Lewis (lewis@mail.msen.com) at July 03, 2021 05:20 PM

System.V3-dtl.1236

Also update special objects array to match oscog expectations where possible.

Name: System-eem.1236
Author: eem
Time: 28 June 2021, 10:13:05.818847 am
UUID: eb4ecd02-13f0-7b48-ac7d-d77dbdfa49f5
Ancestors: System-dtl.1235

Add the new primitive error codes to the specialObjectsArray.

by Dave Lewis (lewis@mail.msen.com) at July 03, 2021 05:19 PM

Kernel.V3-dtl.1405

Name: Kernel-mt.1405
Author: mt
Time: 29 June 2021, 9:12:17.425032 am
UUID: 0c90c979-78a0-8a4a-85b8-35b90f0cbc2d
Ancestors: Kernel-dtl.1404

Fixes regression in mapping modifier keys for keyDown/keyUp events on macOS.

The bug was in the VirtualKeyTable, which had an entry for 0 on macOS, but not on Windows and X11 platforms.

by Dave Lewis (lewis@mail.msen.com) at July 03, 2021 02:19 PM

July 02, 2021

source.squeak.org

Chronology-Tests-ct.27

Revises tests for Duration >> #wait and #busyWait. In particular, fixes a typo (#new instead of #now) in #testWait which made that test pretty much worthless. :-)

Supersedes Chronology-Tests-ct.26.

July 02, 2021 04:29 PM

Chronology-Tests-ct.26

Complements Chronology-Core-ct.67.

July 02, 2021 04:11 PM

Chronology-Core-ct.67

Adds Duration >> #busyWait and some explaining prose.

See http://lists.squeakfoundation.org/pipermail/squeak-dev/2021-July/215928.html. Thank you for the feedback!

July 02, 2021 04:11 PM

VMMaker.oscog-eem.2977

Fix symbolicMethod: for full lbocks.
Commentary.

by Eliot Miranda (eliot.miranda@gmail.com) at July 02, 2021 02:13 PM

System-eem.1237

Fix MessageTally class>>#tallySends:

by Eliot Miranda (eliot.miranda@gmail.com) at July 02, 2021 01:13 PM

VMMaker.oscog-eem.2975

Oops; don't forget the StackInterpreter, avoiding the shadow of memory in readImageFromFile:HeapSize:StartingAt:

by Eliot Miranda (eliot.miranda@gmail.com) at July 02, 2021 12:54 PM

VMMaker.oscog-eem.2974

Change how the code zone is allocated in the Cogit VMs to support Apple's MAP_JIT flag, required on M1. Eliminate the method variable in translated Spur VMs.

by Eliot Miranda (eliot.miranda@gmail.com) at July 02, 2021 12:53 PM

June 23, 2021

source.squeak.org

Kernel-dtl.1404

Rearrange the code in EventSensor virtual keys methods to reduce the number of literals in methods, allowing EventSensor class>>virtualKeysOnWindows to be compiled with the EncoderForV3PlusClosures bytecode set.

by David T. Lewis (lewis@mail.msen.com) at June 23, 2021 08:30 PM

June 22, 2021

source.squeak.org

VMMaker.oscog-eem.2973

Oops! The new shorten:toIndexableSize: in SpurMemoryManager needs to be marked <api>.

Rename bytesInObject: to bytesInBody: to indicate that it's a heap thang not a Smalltalk thang.

by Eliot Miranda (eliot.miranda@gmail.com) at June 22, 2021 10:35 PM

VMMaker.oscog-eem.2972

Fix th woefully broken Spur shorten:toIndexableSize: which is needed ror ImageSegment loading and was hanging on by a thread.

To support this allow slimbridges throughout new space, and hence use objectAfterMaybeSlimBridge:limit: in place of objectAfter:limit: in all new space enumeration. Also implement SpurMemoryManager>>memcpy:_:_: more fully.

Extend leak checking with GCCheckShorten, renaming all non-GC leak check operarions that used to use GCModeXXX names to GCCheckXXX.

Have cloneSimulation update byteCountText for evidence of progress when doing several slow leak checks.

TestingPrimitives is now one of the names defines at compile time.

by Eliot Miranda (eliot.miranda@gmail.com) at June 22, 2021 10:09 PM

VMMakerUI-eem.37

Robustess prior to display installation in the simulators' handleListenEvent:s

by Eliot Miranda (eliot.miranda@gmail.com) at June 22, 2021 10:01 PM

Cog-eem.436

Image level tests for Spur shorten:toIndexableSize:

by Eliot Miranda (eliot.miranda@gmail.com) at June 22, 2021 10:00 PM

Tools-mt.1058

Fixes missing "references to binding" entry in DictionaryInspector menu.

The bug was that there are bindings other than (sub-)instances of Binding, even regular Associations. Well, #isVariableBinding is older than Environment's Binding hierarchy. Not sure whether even Undeclared should hold instances of Binding.

See http://lists.squeakfoundation.org/pipermail/squeak-dev/2021-June/215860.html

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at June 22, 2021 06:58 AM

June 16, 2021

squeaksource.com

PromisesRemote-rww.8

update to SecureRandom picker

by Robert Withers (rabbit@churchofthesacrifice.org) at June 16, 2021 03:34 PM

ParrotTalk-rww.61

refactored to support session config.

by Robert Withers (rabbit@churchofthesacrifice.org) at June 16, 2021 03:34 PM

TraceMonitor-rww.3

added GlobalMonitor

by Robert Withers (rabbit@churchofthesacrifice.org) at June 16, 2021 03:34 PM

TraceMonitor-rww.3

added GlobalMonitor

by Robert Withers (rabbit@churchofthesacrifice.org) at June 16, 2021 03:34 PM

PromisesLocal-rww.29

updated required package version to 2.

by Robert Withers (rabbit@churchofthesacrifice.org) at June 16, 2021 03:33 PM

ThunkStack-rww.36

refactored to support session config.

by Robert Withers (rabbit@churchofthesacrifice.org) at June 16, 2021 03:33 PM

CryptographyRSFEC-rww.30

preserve in-image implementations

by Robert Withers (rabbit@churchofthesacrifice.org) at June 16, 2021 03:01 PM

CryptographyRSPlugin-rww.18

mark <inline: true>

by Robert Withers (rabbit@churchofthesacrifice.org) at June 16, 2021 03:01 PM

CryptographyRSErasure-rww.31

added codingLoop primitives

by Robert Withers (rabbit@churchofthesacrifice.org) at June 16, 2021 07:58 AM

CryptographyRSErasureTests-rww.14

split off ExhaustiveTests

by Robert Withers (rabbit@churchofthesacrifice.org) at June 16, 2021 07:58 AM

CryptographyRSFEC-rww.29

set prim calling methods to the side

by Robert Withers (rabbit@churchofthesacrifice.org) at June 16, 2021 07:58 AM

CryptographyRSFECTests-rww.12

reorganized tests

by Robert Withers (rabbit@churchofthesacrifice.org) at June 16, 2021 07:58 AM

CryptographyRSPlugin-rww.17

added codingLoop primitives

by Robert Withers (rabbit@churchofthesacrifice.org) at June 16, 2021 07:58 AM

CryptographyRSFEC-rww.28

disable bug-ridden primitives for
Poly>>#dividePoly:
Decoder>>#runEuclideanAlgorithmPoly:poly:rDegrees:
Decoder>>#decode:twoS:

by Robert Withers (rabbit@churchofthesacrifice.org) at June 16, 2021 02:18 AM

CryptographyRSPlugin-rww.16

update primitives in bug fixing.

disable bug-ridden primitives for
Poly>>#dividePoly:
Decoder>>#runEuclideanAlgorithmPoly:poly:rDegrees:
Decoder>>#decode:twoS:

by Robert Withers (rabbit@churchofthesacrifice.org) at June 16, 2021 02:18 AM

June 15, 2021

source.squeak.org

Morphic-ct.1774

Allows models to honor the currently hovered column position in a PluggableMultiColumnListMorph for mouse actions such as tool-tips or double-click events.

Usage examples:

multiColumnList getHelpSelector: #helpAtRow:atColumn:.
multiColumnList doubleClickSelector: #doubleClickColumn:.

June 15, 2021 04:50 PM

squeaksource.com

CryptographyRSFEC-rww.27

debugging

by Robert Withers (rabbit@churchofthesacrifice.org) at June 15, 2021 03:54 PM

CryptographyRSFECTests-rww.11

debugging

by Robert Withers (rabbit@churchofthesacrifice.org) at June 15, 2021 03:54 PM

CryptographyRSPlugin-rww.15

debugging

by Robert Withers (rabbit@churchofthesacrifice.org) at June 15, 2021 03:54 PM

source.squeak.org

Morphic-ct.1773

Complements System-ct.1236.

June 15, 2021 02:01 PM

System-ct.1236

Fixes RealEstateAgent intolerance with a nil world which must be handled according to senders. Document the fact that world can be nil in all relevant senders. I struggled about this when I encountered a recursive project error. See StandardSystemView >> #initialFrame.

June 15, 2021 02:00 PM

June 14, 2021

source.squeak.org

VMMaker.oscog-dtl.2968

Merge VMMaker.oscog-nice.2957 from inbox required for fix_include_order:
https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/562

Fix from Alistair Grant for globalSessionID range overflow:
https://github.com/pharo-project/opensmalltalk-vm/issues/233
http://lists.squeakfoundation.org/pipermail/vm-dev/2021-May/036291.html

by David T. Lewis (lewis@mail.msen.com) at June 14, 2021 03:56 PM

squeaksource.com

CryptographyRSPlugin-rww.14

change looping in Poly>>#initializeField...

by Robert Withers (rabbit@churchofthesacrifice.org) at June 14, 2021 12:29 PM

CryptographyRSFECTests-rww.10

remove in-image tests.

by Robert Withers (rabbit@churchofthesacrifice.org) at June 14, 2021 12:29 PM

June 08, 2021

source.squeak.org

Monticello-eem.749

Load time robustness when proceeding through syntax errors (which result in nil methods in MethodAddition).

by Eliot Miranda (eliot.miranda@gmail.com) at June 08, 2021 08:16 PM

squeaksource.com

Ocompletion-eem.123

Robustness for Monticello package loading when proceeding throguh syntax errors, which can result in nil methods.

by Eliot Miranda (eliot.miranda@gmail.com) at June 08, 2021 07:17 PM

source.squeak.org

FFI-Tests-mt.52

Complements FFI-Kernel-mt.181

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at June 08, 2021 09:54 AM

FFI-Kernel-mt.181

Fixes and clean-up in array types. No need for #isPointerTypeForArray because #referentClass is used only for alias-to-array types as in other types. The #contentType has its own instVar.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at June 08, 2021 09:53 AM

FFI-Callbacks-mt.25

Makes FFI-Callbacks compatible with Alien (callbacks):
- Renames #FFICallbackMemory to #AlienStub
- Moves management of executable pages from ExternalAddress and FFICallbackMemory to FFICallback
- Marks compatibility methods with flag #alienCompatibility.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at June 08, 2021 07:41 AM

squeaksource.com

ConfigurationOfFFI-mt.50

FFI-Callbacks is compatible with Alien now. So, load it by default when loading Squeak FFI.

June 08, 2021 06:59 AM

May 26, 2021

squeaksource.com

CryptographySignatures-rww.19

fix random access

by Robert Withers (rabbit@churchofthesacrifice.org) at May 26, 2021 05:53 AM

Morphic-cmm.1616

Make MC save dialogs more pleasant by assuming each line has at least 5 characters, so that the #charactersOccluded will calculate greater and allocate a little more space for it.

by Chris Muller (ma.chris.m@gmail.com) at May 26, 2021 03:13 AM

Kernel-cmm.1293

Revert Fraction>>#= so that (Fraction numerator: 5 denominator: 1) = 5. Having this be false is as wrong as having 5.0 = 5 return false, IMO.

by Chris Muller (ma.chris.m@gmail.com) at May 26, 2021 03:13 AM

Compiler-cmm.329

Kent Beckian purposefully plenk'd pretty printing.

by Chris Muller (ma.chris.m@gmail.com) at May 26, 2021 03:08 AM

Collections-cmm.871

Revert the changes introduced in Symbol>>#= (via Collections-nice.820) because it breaks the classic Proxy pattern.

by Chris Muller (ma.chris.m@gmail.com) at May 26, 2021 03:07 AM

Chronology-Core-cmm.58

Fix a dangerous part of the Chronology API.

- DateAndTime utcMicroseconds: Time utcMicrosecondClock offset: 0 looks reasonable, but it's very not. Notice how it's off, silently, by 68 years!!!
- Deprecate Time class>>#utcMicrosecondClock. Only soft-deprecate it for now due to its use in Kernel and Network packages. Will update them as needed.
- Replace it with Time class>>#primMicrosecondClockValue, where "prim" at least indicates implementation-specific properties may be present.
- Complement legacy Smalltalk-80 protocol, and expose the new microsecond-level precision in the VM for users with:
DateAndTime>>#asMicroseconds and
DateAndTime class>>#fromMicroseconds:
- Rename Time class>>#localMicrosecondClock to #localMicrosecondClockValue to 1) be consistent with microsecondClockValue and 2) avoid overloading the "clock" nomenclature. It's a value, not an object!
- Remove unused DateAndTime class>>#millisecondClockValue.

by Chris Muller (ma.chris.m@gmail.com) at May 26, 2021 03:07 AM

Magma-Client-cmm.743

MagmaVersionError needs to be resumable during DB version-upgrades. It's also helpful to know the dbVersion that was read from the DB.

by Chris Muller (ma.chris.m@gmail.com) at May 26, 2021 02:32 AM

Magma-Server-cmm.521

- no longer necessary to #close / #open just to truncate.
- Less Delay garbage in one method.
- Let MagmaFileTraverser support a one or two-arg block. If a two-arg block is specified it is passed the graphBuffer (with access to the path of #buffers).
- Updating the DB's internal #version metafield is worth signaling a MagmaNotification.
- When running out of memory, only kill the worst non-__system session if it's NOT the only one because, in that case, it shouldn't be the cause of the memory issue.
- MagmaFileTraverser now supports either a one OR two argument "do" block. If two args, the 2nd is now the GraphBuffer, from which can be obtained the path to the current buffer (the first argument).
- Cleaner setting of loadProcess of luxury queries.
- More halts for recovery debugging.
- Better error handling of Magma version upgrades.
- RepositoryController now prints its location.
- deployment needs more work.
- Support upgrading of version 16 repositories.

by Chris Muller (ma.chris.m@gmail.com) at May 26, 2021 02:32 AM

Magma-Tools-cmm.82

- Use Magma17To18Upgrader in this package to upgrade Magma databases from 1.62 to 1.63.
- The generic MagmaUpgrader superclass now has a 'log' to capture the various Notifications.
- It also includes a #enumerate:check:repair:perform: convenience method for invoking a MagmaDataRepair, as well as methods for doing different things for an upgrade.

by Chris Muller (ma.chris.m@gmail.com) at May 26, 2021 02:32 AM

Magma-Tester-cmm.429

- Trade #crashVm for #killVm, which uses linux command to "kill -9" the PID of the running Squeak vm.

by Chris Muller (ma.chris.m@gmail.com) at May 26, 2021 02:32 AM

Ma-Client-Server-Core-cmm.288

After two days of debugging: Revert MaServerLocation>>#isLocalHost to its 2009 version. The 2018 "fix" was put in due to a VM bug which was then later apparently fixed.

by Chris Muller (ma.chris.m@gmail.com) at May 26, 2021 02:32 AM

Ma-Search-cmm.59

Capture the series of messages sent to a MaBehaviorFinder into its 'log'. This way, a "logical" definition of behaviors, useful for systems that evolve.
Inspired by the GraphQL framwork for Squeak. It has a "SmalltalkEngine" which is intended to expose Smalltalk via GraphQL.

by Chris Muller (ma.chris.m@gmail.com) at May 26, 2021 02:32 AM

BrpExtensions-cmm.16

Since reverting Collection>>#asCollection back to Brent's original implementation, there were no issues experienced until MaxTrader needed to use Array's of Strings as input to a permutation, so that particular functionality that was lost is now restored by this new #asCollection override in String.

by Chris Muller (ma.chris.m@gmail.com) at May 26, 2021 02:32 AM

Ma-Collections-cmm.164

Eliot felt the need to rename my #addNewElement: to #ifAbsentAdd:. Make the same to MaIdentitySet.

by Chris Muller (ma.chris.m@gmail.com) at May 26, 2021 02:32 AM

Ma-Serializer-Tests-cmm.52

Merge.

by Chris Muller (ma.chris.m@gmail.com) at May 26, 2021 02:32 AM

Ma-Core-cmm.319

Clean up new SI suffixes for Integer.

by Chris Muller (ma.chris.m@gmail.com) at May 26, 2021 02:32 AM

Ma-Serializer-Core-cmm.350

- Finish removal of the original post-materialization hook. Perhaps the other hooks should be trimmed, too?

by Chris Muller (ma.chris.m@gmail.com) at May 26, 2021 02:32 AM

May 25, 2021

source.squeak.org

Sound-eem.80

Fix FFT>>plot:in: for an all-zero collection.

by Eliot Miranda (eliot.miranda@gmail.com) at May 25, 2021 11:07 PM

squeaksource.com

CryptographyRandom-rww.19

update random sources

by Robert Withers (rabbit@churchofthesacrifice.org) at May 25, 2021 08:14 PM

CryptographyRSErasureTests-rww.7

make arithmetic protocol follow the same naming pattern: #*: by:

by Robert Withers (rabbit@churchofthesacrifice.org) at May 25, 2021 08:07 PM

CryptographyRSErasurePlugin-rww.8

package rename

by Robert Withers (rabbit@churchofthesacrifice.org) at May 25, 2021 08:06 PM

source.squeak.org

Morphic-ct.1771

Fixes a bottleneck when opening a yellow button menu on a morph that contains a very large number of subsub*morphs. On not-so-fast systems, this can be reproduced using:

self systemNavigation browseAllSelect: #notNil

On faster systems, you might need to write a small toolbuilder application to reproduce the bottleneck. I have an app with >10k list items in my image which actually blocked the image for several seconds when I yellow-clicked the window.

Fixed the problem without duplicating the logic of #allStringsAfter: by using a generator.

May 25, 2021 05:38 PM

Tests-jar.448

Complement Kernel-jar.1386 (Fix a list of termination bugs described in http://forum.world.st/Solving-multiple-termination-bugs-summary-amp-proposal-td5128285.html)

These basic tests illustrate the unwind semantics during termination implemented by the new #teminate..

Current implementation of #teminate will fail with these tests - they should accompany Kernel-jar.1386 (if accepted).

Thanks

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at May 25, 2021 05:59 AM

Kernel-jar.1410

Prevent VM crashes due to returning from #cannotReturn. The fix introduces a isRecursive variable to BlockCannotReturn to recognize an infinite loop.
#cannotReturn: loops to itself and notifies the user an infinite loop is starting. Returning from #cannotReturn: is no longer possible so that the user cannot crash the VM by accidentally pressing Proceed, by stepping over etc. #terminate can take advantage of this improved behavior.

This is a more sophisticated alternative to Kernel-jar.1404 for a discussion.

Examples like:

[^2] fork

or

[[self error] ensure: [^2]] fork

or even

a := [true ifTrue: [^ 1] yourself]
"and then do-it separately (c) Christoph:"
[a value] on: BlockCannotReturn do: [:ex | ex resume]

can no longer crash the image :)

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at May 25, 2021 05:58 AM

Kernel-jar.1409

Replace Kernel-jar.1408 and supersede Kernel-jar.1406. This is a "final" version :)

(I noticed too late Kernel-jar.1408 uploaded incorrectly, apologies - please disregard that commit)

Clean-up, extract repeating code to a new method #complete:to:, revert an incorrect modification of #runUntilErrorOrReturnFrom from Kernel-jar.1406 and 1408, resolve MessageNotUnderstood recursion problem, update comments...

Consistent with current ProcessTest >> #testNestedUnwind semantics for completing nested halfways-through unwind blocks during termination:

x1 := x2 := x3 := nil.
p:=[
[
[ ] ensure: [ "halfway through completion when suspended"
[ ] ensure: [ "halfway through completion when suspended"
Processor activeProcess suspend. "here the process gets terminated"
x1 := true].
x2 := true]
] ensure: [ "not started yet when suspended"
x3 := true]
] fork.
Processor yield.
p terminate
self assert: x1 & x2 & x3.

Original discussion of the changes in #terminate: http://forum.world.st/Solving-multiple-termination-bugs-summary-amp-proposal-td5128285.html

Discussion regarding a proposal to change the current semantics: http://forum.world.st/The-semantics-of-halfway-executed-unwind-contexts-during-process-termination-td5129800.html

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at May 25, 2021 05:58 AM

Kernel-jar.1404

Prevent VM crashes due to returning from #cannotReturn. The fix loops #cannotReturn to itself so that the user cannot crash the VM by accidentally pressing Proceed, by stepping over etc.

#terminate can take advantage of this improved behavior - will post a proposal in a separate changeset.

by Marcel Taeumel (marcel.taeumel@hpi.uni-potsdam.de) at May 25, 2021 05:58 AM

May 18, 2021

squeaksource.com

CryptographyRSErasure-rww.9

remove old comment

by Robert Withers (rabbit@churchofthesacrifice.org) at May 18, 2021 09:31 PM

May 17, 2021

squeaksource.com

CryptographyRSErasure-rww.8

adopting an interface class, for calls to an RSErasurePlugin

by Robert Withers (rabbit@churchofthesacrifice.org) at May 17, 2021 05:03 PM

CryptographyRSErasure-rww.7

repair benchmark, with update to a check method.

by Robert Withers (rabbit@churchofthesacrifice.org) at May 17, 2021 08:52 AM

CryptographyRSErasureTests-rww.6

final bug fixes, all tests pass Green!

by Robert Withers (rabbit@churchofthesacrifice.org) at May 17, 2021 01:08 AM

CryptographyRSErasure-rww.6

final bug fixes, all tests pass Green!

by Robert Withers (rabbit@churchofthesacrifice.org) at May 17, 2021 01:08 AM

May 16, 2021

squeaksource.com

System.V3-dtl.1235

Name: System-dtl.1235
Author: dtl
Time: 15 May 2021, 2:16:34.362599 pm
UUID: 0fa23815-1b1d-431f-ad7f-3b97f3a0cf08
Ancestors: System-dtl.1234

Clean up redundant fileIn methods and let SARInstaller use the same method as the rest of us.

by Dave Lewis (lewis@mail.msen.com) at May 16, 2021 02:21 PM

System.V3-dtl.1234

Name: System-dtl.1234
Author: dtl
Time: 15 May 2021, 1:30:44.531511 pm
UUID: 40e78b44-f874-4a29-af19-9d289d15d049
Ancestors: System-dtl.1233

PositionableStream>>fileInSilentlyAnnouncing: has not been used since at least Squeak 3.8, and was not present in Squeak 3.6. Remove it without deprecation.

by Dave Lewis (lewis@mail.msen.com) at May 16, 2021 02:19 PM

System.V3-dtl.1233

Name: System-dtl.1233
Author: dtl
Time: 15 May 2021, 1:25:37.809444 pm
UUID: 660215fe-f151-4184-8a31-8775202baa81
Ancestors: System-nice.1232

Be permissive when filing in Cuis packages. Skip chunks that begin with known extensions that are not meaningful for Squeak, logging to Transcript to show chunks that have been ignored.

by Dave Lewis (lewis@mail.msen.com) at May 16, 2021 02:17 PM

System.V3-dtl.1232

Name: System-nice.1232
Author: nice
Time: 29 April 2021, 8:13:00.64144 pm
UUID: 9bba2398-62e1-bd4f-90ba-5960a05f6ec8
Ancestors: System-mt.1231

No need to resume: from within defaultAction.
The sender of defaultAction will resume:
See UndefinedObject>>handleSignal:

by Dave Lewis (lewis@mail.msen.com) at May 16, 2021 02:14 PM

Kernel.V3-dtl.1402

Name: Kernel-nice.1402
Author: nice
Time: 7 May 2021, 9:39:45.713143 pm
UUID: 21ee698b-9f75-40e3-9bd3-944e73cb9e20
Ancestors: Kernel-nice.1401

Fix sqrt bugs exposed by #testSqrtNearExactTie.

If we pretend to round to nearest, we must do it right, not just pretend...

How was the problem found? Accidentally...
I re-examined our implementation after musing in SO:
https://stackoverflow.com/questions/67361541/correctly-rounded-computation-of-sqrt-of-sum-of-two-floats-handling-overflow/67426790#67426790

Musing is more powerful than dumb static and coverage tests, I wish I got more time for musing :)
We deadly need evolutive testing (neural based).

by Dave Lewis (lewis@mail.msen.com) at May 16, 2021 02:01 PM

Kernel.V3-dtl.1401

Name: Kernel-nice.1401
Author: nice
Time: 6 May 2021, 11:24:25.403176 pm
UUID: 2fbbe628-b187-4e75-ab6f-a6d16df14ce7
Ancestors: Kernel-jar.1400, Kernel-nice.1399

Merge exception handling fixes Kernel-jar.1400, Kernel-nice.1399

by Dave Lewis (lewis@mail.msen.com) at May 16, 2021 01:59 PM

Kernel.V3-dtl.1400

Name: Kernel-jar.1400
Author: jar
Time: 4 May 2021, 10:35:06.700121 pm
UUID: 048df236-d26f-434e-964d-7707b8f2a9a8
Ancestors: Kernel-nice.1397

Fix a bug causing a cannot return error when re-signalling an already signalled exception. The fix makes re-signalling equivalent to sending #outer. Examples follow.

Discussion see http://forum.world.st/The-Inbox-Kernel-jar-1399-mcz-tp5129370p5129434.html

by Dave Lewis (lewis@mail.msen.com) at May 16, 2021 01:57 PM

Kernel.V3-dtl.1399

Name: Kernel-nice.1399
Author: nice
Time: 3 May 2021, 8:41:29.262256 pm
UUID: 90c075cb-6d99-844c-8e53-e697592fe7a1
Ancestors: Kernel-jar.1398

Apply Jaromir fix for nested outed to resumeEvaluating:.

Let resumeUnchecked: rely on resumeEvaluating: in order to avoid code duplication.

Document the (tempAt: 2/tempAt: 2 put:) used in unwinding.

by Dave Lewis (lewis@mail.msen.com) at May 16, 2021 01:52 PM

Kernel.V3-dtl.1398

Name: Kernel-jar.1398
Author: jar
Time: 2 May 2021, 2:56:26.972089 pm
UUID: 9398993d-726c-8747-bde6-506318c4f898
Ancestors: Kernel-nice.1397

Fix a bug in #resignalAs causing an incorrect evaluation of resignalAs in combination with #outer. Complemented with a test in Tests-jar.461 (Inbox)

To illustrate the bug try:

| x |
x:=''.
[
[1/0. x:=x,'1'] on: ZeroDivide do: [:ex | ex outer. x:=x,'2'].
x:=x,'3'
] on: ZeroDivide do: [:ex | ex resignalAs: Notification].
x

answers:
---> '2' currently - incorrect
---> '13' after the fix

by Dave Lewis (lewis@mail.msen.com) at May 16, 2021 01:51 PM

Kernel.V3-dtl.1397

Name: Kernel-nice.1397
Author: nice
Time: 30 April 2021, 9:48:57.972338 pm
UUID: df20ab21-bba8-4919-b4a1-d2c7a6c6e8de
Ancestors: Kernel-mt.1396, Kernel-jar.1395

merge Kernel-jar.1395 (fix outer)

Name: Kernel-jar.1395
Author: jar
Time: 30 April 2021, 12:25:17.561362 am
UUID: 0f589a20-6b8e-a94b-9dbc-9b3f91c84ce8
Ancestors: Kernel-nice.1394

Fix a bug in Exception>>#outer causing a return to an incorrect handler context. Explanation in: http://forum.world.st/A-bug-in-Exception-gt-gt-outer-causing-a-return-to-an-incorrect-handler-context-td5129273.html

by Dave Lewis (lewis@mail.msen.com) at May 16, 2021 01:49 PM

Kernel.V3-dtl.1396

Name: Kernel-mt.1396
Author: mt
Time: 30 April 2021, 9:16:44.415936 am
UUID: d1ca8229-01e5-b548-9660-5018841eea20
Ancestors: Kernel-nice.1395

Adds support for composition of tool-builder specs such as through DualChangeSorter. There, we need to share the windowSpec.

by Dave Lewis (lewis@mail.msen.com) at May 16, 2021 01:47 PM

Kernel.V3-dtl.1395

Name: Kernel-nice.1395
Author: nice
Time: 29 April 2021, 8:18:50.78844 pm
UUID: f62a6682-e4e0-404a-8b5a-f25b60cad832
Ancestors: Kernel-nice.1394

Clean-up scories from previous fix for nested exception handling.

No need to resume from within defaultAction.

If anySatisfy: does the job, don't you inline it!

by Dave Lewis (lewis@mail.msen.com) at May 16, 2021 01:45 PM

Compiler.V3-dtl.458

Name: Compiler-nice.458
Author: nice
Time: 29 April 2021, 7:48:52.29844 pm
UUID: 354afee1-3aba-4d40-b36c-0000b2e10a93
Ancestors: Compiler-nice.457

Restore newSource which is still used by MethodAddition >> #createCompiledMethod.

No need to resume: from within defaultAction.
The sender of defaultAction will resume:
See UndefinedObject>>handleSignal:

by Dave Lewis (lewis@mail.msen.com) at May 16, 2021 01:42 PM

Collections.V3-dtl.944

Name: Collections-eem.944
Author: eem
Time: 12 May 2021, 10:19:58.957605 am
UUID: 97274a09-ff46-4d4c-8f16-420df357849d
Ancestors: Collections-mt.943

Nuke duplicate methods in Float32Array inherited from FloatArray.

by Dave Lewis (lewis@mail.msen.com) at May 16, 2021 11:46 AM

May 09, 2021

squeaksource.com

Kernel.V3-dtl.1394

Name: Kernel-nice.1394
Author: nice
Time: 26 April 2021, 1:50:12.861556 am
UUID: 3a981b94-0213-44f3-8263-838dda062f8a
Ancestors: Kernel-bp.1393

Revise exception handling so as to
- inactivate inner handler blocks when the exception is signalled in an outer handler
- except when the inner handler has been explicitely rearmed (see rearmHandlerDuring:)

Implementation notes: add a marker <primitive: 199> to handleSignal:, so as to detect the case when an exception is signalled within the execution of a handler block.

This induces a subtle difference:
- findNextHandlerContext might now return a handleSignal: context,
- while nextHandlerContext will only return a on:do: context (or nil).

The new workhorse for finding the proper handler is now #nextHandlerContextForSignal:
It finds and answers the (handler) context that will handle the exception, but if it finds a handleSignal: during the scan, it will restrict the search to rearmed handlers, until it reaches the handler of prior exception, at which step it continues to search normally.

Due to the scanning of inner blocks, we still need a marker for blocking re-entrancy (handlerActive temp in on:do:), but also a marker for rearmed blocks (handlerRearmed in on:do:). This can't be the same marker: an example is testHandlerReentrancy: when the rearmed inner handler pass the exception to its outer handler, the outer handler must still be inactive if it raised the Exception.

Borrow resumeEvaluating: to Cuis and use it in resignalAs:

Use many small methods in order to make the intention more explicit than with those mysterious tempAt: tempAt:put:

by Dave Lewis (lewis@mail.msen.com) at May 09, 2021 12:56 PM

May 08, 2021

squeaksource.com

Kernel.V3-dtl.1393

Name: Kernel-bp.1393
Author: bp
Time: 25 April 2021, 4:16:12.156698 pm
UUID: 6ff1afed-6782-42ad-a968-4c98da9d2c2b
Ancestors: Kernel-mt.1392

Add missing Object>>#isScaledDecimal which is already implemented in the subclass ScaledDecimal.

by Dave Lewis (lewis@mail.msen.com) at May 08, 2021 09:22 PM

Kernel.V3-dtl.1392

Name: Kernel-mt.1392
Author: mt
Time: 25 April 2021, 12:05:33.297546 pm
UUID: 29af9533-b510-49d5-8bde-86666d35f486
Ancestors: Kernel-mt.1391

Small fix. On Linux, uses non-printable control characters when "map CTRL to CMD" is enabled but "map non-printable to printable" is disabled.

Due to limitations of physical modifier keys across platforms, this is not super important but it is nice to get consistent event data across platforms. I suppose that checking for non-printable control characters in keyboard handlers should be avoided to ensure cross-platform compatibility.

See commentary in KeyboardEvent >> #checkCommandKey for more information.

by Dave Lewis (lewis@mail.msen.com) at May 08, 2021 09:20 PM

System.V3-dtl.1231

Name: System-mt.1231
Author: mt
Time: 29 April 2021, 11:03:42.969891 am
UUID: af06a9e1-6280-0649-820c-f6c89ef25640
Ancestors: System-mt.1230

Removes autogenerated pref accessors, which are now under "*autogenerated - ...".

by Dave Lewis (lewis@mail.msen.com) at May 08, 2021 09:11 PM

May 02, 2021

squeaksource.com

Kernel.V3-dtl.1384

Name: Kernel-nice.1384
Author: nice
Time: 11 April 2021, 7:33:23.487481 pm
UUID: ecb5db19-59bc-45f0-85d3-d9296a936a68
Ancestors: Kernel-mt.1383

Another attempt at fixing #testHandlerFromAction. Unlike previous attempts, this one preserves the expectations of #testHandlerReentrancy.

The solution is to de-activate the handlers as we backtrack the stack, but to reactivate them before performing final exception handling actions (like resuming, resignalling or performing defaultAction). Indeed, those handlers must be able to handle a secondary exception raised in the course of this action.

by Dave Lewis (lewis@mail.msen.com) at May 02, 2021 02:05 PM

April 16, 2021

squeaksource.com

WebCounter-rzm.1

empty log message

by Ryan (ryanmarion012@gmail.com) at April 16, 2021 10:30 PM

PostgresV3-Core-ul.35

- PG3Connection >> #isConnected shouldn't raise an error

by Levente Uzonyi (leves@elte.hu) at April 16, 2021 06:11 PM

April 15, 2021

squeaksource.com

Preserves-tonyg.14

PreservesReader >> upToEnd

by Tony Garnock-Jones (tonyg@leastfixedpoint.com) at April 15, 2021 07:25 AM

April 14, 2021

squeaksource.com

SBE-Quinto-Heiko.V01

empty log message

by Heiko (heikos@online.de) at April 14, 2021 07:25 PM

March 30, 2021

squeaksource.com

Kernel.V3-dtl.1383

Name: Kernel-mt.1383
Author: mt
Time: 26 March 2021, 12:51:18.904073 pm
UUID: 524a87b1-28d6-f044-8a9a-4ca045211ac1
Ancestors: Kernel-ct.1382

Merges Kernel-ct.1382

by Dave Lewis (lewis@mail.msen.com) at March 30, 2021 10:54 PM

Kernel.V3-dtl.1382

Name: Kernel-ct.1382
Author: ct
Time: 15 March 2021, 1:52:03.249869 pm
UUID: e108423f-661f-4d4f-9ad8-c667c3995b32
Ancestors: Kernel-mt.1381

Proposal: Revises usage and handling of primitive 19, also known as the simulation guard. Don't use it in #newProcess and variants since they don't involve any actual control logic. Instead, also show a simulation warning when debugging a control primitive (primitiveSignal primitiveWait primitiveResume primitiveSuspend). Improves integration of simulation guard warnings by signaling a Warning on the simulator stack rather than spawning a debugger on the debugged process. This also makes it easier to handle these warnings in a non-interactive context. See http://forum.world.st/Simulation-guard-lt-primitive-19-gt-crashes-the-image-td5127443.html and http://forum.world.st/Please-try-out-Fixes-for-debugger-invocation-during-code-simulation-td5127684.html for more information.

Reuploaded to resolve merge conflict with Kernel-mt.1381. Replaces Kernel-ct.1381, which can be moved into the treated inbox.

by Dave Lewis (lewis@mail.msen.com) at March 30, 2021 10:53 PM

System.V3-dtl.1224

Name: System-tonyg.1224
Author: tonyg
Time: 29 March 2021, 10:15:02.279821 am
UUID: 9d897d72-46fc-4205-a27b-89c7a50ac104
Ancestors: System-mt.1223

Teach SystemOrganizer about multiple environments.

by Dave Lewis (lewis@mail.msen.com) at March 30, 2021 10:50 PM

System.V3-dtl.1223

Name: System-mt.1223
Author: mt
Time: 26 March 2021, 12:36:58.297513 pm
UUID: a5df7ebb-e1e7-304c-85e5-61d01132f0bd
Ancestors: System-mt.1222

Adds hook to browse environments.

by Dave Lewis (lewis@mail.msen.com) at March 30, 2021 10:43 PM

March 29, 2021

squeaksource.com

Preserves-tonyg.5

Repair class-side initialize.

by Tony Garnock-Jones (tonyg@leastfixedpoint.com) at March 29, 2021 01:59 PM

Snarl-tonyg.9

Repair class-side initialize.

March 29, 2021 01:58 PM

BitSyntax-Examples-tonyg.7

Repair class-side initialize.

by Tony Garnock-Jones (tonyg@leastfixedpoint.com) at March 29, 2021 01:57 PM

Preserves-tonyg.4

Schema compiler

by Tony Garnock-Jones (tonyg@leastfixedpoint.com) at March 29, 2021 06:58 AM

March 22, 2021

squeaksource.com

OSProcess-dtl.124

Minor compatibility update to allow a test to run on Cuis

by John-Reed Maffeo (jrmaffeo@gmail.com) at March 22, 2021 04:24 PM