Skip to content

Releases: powerlang/egg

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 06 May 00:58
a000a4e

Highlights since v0.1.17.

New modules

  • EPM (Egg Package Manager): config-driven workflows — new, init, start, dev, install, list, test.
  • ArgParser: command/option parser with parse-result objects, used by EPM and friends.
  • Random: PCG XSH-RR PRNG.
  • TOML: parser + writer with tests.
  • SUnit: full test framework module, with TestSuite class>>forModule: and TestSuite>>runDebug for log-as-you-go runs.
  • Compiler.Tests module (SmalltalkScanner tests, etc.).

Compiler & Bootstrap

  • New self-hosted Smalltalk compiler/parser stack: AST nodes, binding classes, environments, semantic visitor.
  • BootstrappedKernel and a refactor splitting Bootstrapper into Loader + SymbolProvider.
  • Catch2-based C++ tests for the parser, source loader, and compilation.
  • MethodDictBuilder abstraction extracted.
  • Tonel reader: support Extension types, comments, method category, $-escaped delimiters, block reader fix, sorted methods, class comments, tests.
  • LargeInteger encoded as little-endian bytes; parser cleanup.
  • Inliner: never inline cascade messages.
  • Parse/compile errors enriched with file:line:col context.

VM / Runtime (C++)

  • DNU support:
    • VM dispatches DNU through _doesNotUnderstand:with: rather than aborting.
    • Runtime::sendLocal_to_* and Evaluator::messageNotUnderstood_ now intern selectors via addSymbol_ so unknown selectors raise a clean MNU instead of crashing.
    • Top-level try/catch in Main.cpp surfaces runtime errors as Error: ....
  • Process / stack model: ProcessVMStack backed by an explicit per-process buffer, with new primitiveProcessVMStackInitializeWith* primitives.
  • Ensure / non-local returns: VM ensure support, better closure non-local return unwinding, returnTo underprimitive.
  • Primitives added: HostExit, float-from-integer creation, additional float primitives, missing host primitives for the Pharo runtime, filesystem & env primitives, search-path module loading.
  • Hardening:
    • SmallInteger arithmetic & bitwise overflow fallback; portable intptr_t mul-overflow helper for MSVC.
    • Float>>timesTwoPower: primitive fixed.
    • StringReplaceFromToWithStartingAt bounds fixed.
    • Integer and at: primitives hardened.
    • commitMemoryUpTo_ length calculation fixed in the allocator.
    • DynamicSymbolProvider symbol table now GC-protected.
    • Fail gracefully on module-load exceptions; warn (not abort) on missing primitive.
    • Skip undermessage registration when the symbol is not yet interned (avoids stale nullptr-keyed dispatch).
    • failPrimitiveWith_ helper.

Kernel

  • String class>>new (delegates to new: 0).
  • ProtoObject _uLongAtOffset: / _uLongAtValidOffset:put:.
  • WideSymbol class>>intern: operates on the argument.
  • ProtoObject>>doesNotUnderstand: passes the receiver into MessageNotUnderstood.
  • ReadStream peek methods refactored.
  • Property tables fixed.
  • MessageNotUnderstood class>>printOn: added.
  • ensure support fixes.
  • Float>>= only consults FPU status when the argument is also a Float.

Module loader

  • Relative module search paths; throw on missing module.
  • Dotted module names and load-from-path supported.

Build & infra

  • Build system migrated to a conanfile.py; dropped -s compiler.cppstd=20 workaround.
  • Default Debug builds now use -O1 for usable VM speed.
  • egg_runtime library extracted; bootstrapper_lib linked into compiler_tests; declared egg_runtimebootstrapper_lib cycle.
  • Build dirs and settings.json ignored.
  • STONWriter initialized on module load.

Documentation

  • Updated README with building table and C++ platform status.
  • Expanded contributor docs (style guides + runtime READMEs).
  • Coding style extracted into CODING_STYLE.md.
  • Git commit labelling format documented.

Tests

  • New regression tests: test182BitShiftRightFullWidth, additional bitwise/shift tests with a runnable main:.

v0.1.17

Choose a tag to compare

@github-actions github-actions released this 05 May 03:03
a79006c
Merge pull request #134 from powerlang/jp/more-webside

Jp/more webside

v0.1.16

Choose a tag to compare

@github-actions github-actions released this 21 Mar 17:14
[ci: release] make release output go to release subdir, fix paths for…

v0.1.14

Choose a tag to compare

@github-actions github-actions released this 09 Mar 23:32
[ci: update] use checkout v4 instead of v3 in windows too

v0.1.13

Choose a tag to compare

@github-actions github-actions released this 21 Nov 15:41
2d5b05b
Merge pull request #102 from powerlang/jp/macos-4gb

Jp/macos 4gb

v0.1.12

Choose a tag to compare

@github-actions github-actions released this 15 Nov 11:32
image-segments: revert isString changes for building

v0.1.11

Choose a tag to compare

@github-actions github-actions released this 15 Nov 11:28
kernel: revert isString removal

v0.1.9

Choose a tag to compare

@github-actions github-actions released this 13 Nov 14:57
ci: make windows build install pkg-config, take 3

v0.1.8

Choose a tag to compare

@github-actions github-actions released this 13 Nov 14:41
ci: make windows build install pkg-config, take 3

v0.1.6

Choose a tag to compare

@github-actions github-actions released this 13 Nov 14:24
ci: make windows build install pkg-config