VOOZH about

URL: https://squeak.org/release_notes/6.0/

⇱ Squeak/Smalltalk | Squeak 6.0 Release Notes


Squeak 6.0 Release Notes

*** Squeak 6.0 Release Notes ***

We are happy to release the next version of Squeak shortly after its 25th anniversary. This is the first Squeak that supports high-resolution displays on all major platforms and offers a flexible UI scale factor through improved support for TrueType fonts. Bundled with the latest OSVM release, the image now uses the new SistaV1 bytecode set by default. We changed the image-format version so that older VMs will not crash on Sista-specific bytecodes. Furthermore, we made many improvements to our programming tools to provide a better programming experience for code writing, object inspection, and process debugging.

Please find below a detailed listing of all the changes, which includes notes on Major Deprecations, Known Issues, and Compatibility Notes at the bottom.

Detailed Improvements in Language, Tools, and the Environment

Kernel (up to Kernel-ct.1482)

Collections (up to CollectionsTests-ct.377)

Chronology (up to Chronology-Core-ct.80)

Compiler (up to Compiler-mt.476)

Environments (up to Environments-ul.84)

Traits (up to Traits-eem.313)

  • Minor optimizations to the compiler.

PackageInfo (up to PackageInfo-nice.74)

  • Fixes inclusion test for packages against invalid method references.

Graphics (up to Graphics-ct.521)

Balloon (up to Balloon-mt.34)

  • No significant changes.

TrueType (Fonts) (up to TrueType-mt.94)

  • Enhancements and robustness improvements to font importing. Ignore hidden/cache files. Windows' symbol fonts work now correctly.
  • Improves performance of text composition and rendering significantly. Extra speed-up for single-byte strings. Improves compression of pre-rendered fonts.
  • Fixes several bugs related to font rendering, glyph clipping for scaled fonts, code-point ranges, and handling of fallback glyphs.
  • Extends glyph accessing protocol on TTFontDescription. Moves extra gap/scale protocol from TTFontDescription up to TTCFont.
  • Adds implementation of cmap format 12. For instance, this adds support for Unicode Cuneiform fonts.
  • Make the cache size for TrueType glyphs a preference.
  • General clean-ups and stability improvements.

Sound (up to Sound-mt.89)

Network (up to NetworkTests-pre.63)

  • Improves support for IPv6 networking.
  • Adds basic XML support for HTTP server directories.
  • Allows unauthenticated SMTP logins without username.
  • Implements equality comparison for URLs.
  • Fixes parsing of mime documents.
  • Improves error handling of connection errors. Miscellaneous stability improvements.

SqueakSSL (up to SqueakSSL-Tests-mt.26)

  • SqueakSSL is not supported under Ubuntu 16.04 LTS.

WebClient (up to WebClient-Core-mt.130)

  • Corrects handling of HTTP status codes (according to RFC 7230).
  • Adds support for cookie field "SameSite".
  • Fixes a syntax error in the encoding of multipart/form-data requests.
  • Adds convenience method for JSON parsing.
  • Overall optimizations, robustness enhancements, and improvements of the internal test coverage.

XML (up to XML-Parser-mt.46)

  • No significant changes.

Files (up to Files-ct.193)

Compression (up to Compression-xw.63)

Regex (up to Regex-Tests-Core-mt.17)

  • Adds full support for lookaround expressions (i.e., positive & negative lookaheads & lookbehinds).
  • Fixes parsing of special characters in character sets and parsing of quantifiers of the form {<min>,}.
  • Overall optimizations and stability improvements concerning parsing invalid expressions.

System (up to System-eem.1361)

  • Levels up the command-line interface of Squeak which now supports do-its and a couple of other options. To get started, run squeak Squeak60.image -help in the command shell of your host system.
  • Turns the demo/high-DPI mode into a flexible and refurbished scale factor and adds a low-ppi mode. The scale factor will automatically be detected based on the DPI density of your screen. Improves switching between UserInterfaceThemes, adds a #themePriority hook for updating targets, and makes it possible to set UI theme properties from a target. Adds a preference to adjust the default size of new windows. Tweaks default font sizes and colors of some themes.
  • Extends SpaceTally with a parameter for limiting traversal depth through the object graph.
  • Complements changes logging with timestamps for class changes and method removal. Adds queries to enumerate actual domain objects for changed classes or methods.
  • Adds Unicode support for method preambles and timestamps.
  • Extends method annotations for browsers with two additional requests for displaying the author and the package of a method.
  • Makes the file-in mechanism compatible with Cuis package file-outs.
  • Sensitizes SystemOrganizer to multiple environments and adds a hook in ToolSet to browse an environment.
  • Adds queries in SystemNavigation to browse all extension methods for a package or all stores into a global variable.
  • Adds a new ToolSet capability to browse a class comment.
  • Adds a new AppRegistry to manage text stylers for different language syntaxes. Examples include the built-in SHTextStylerST80 and the MarkdownEditor (third-party).
  • Refurbishes the "author initials" dialog to cross-check against the list of known contributors.
  • Adds a parameter to TextDiffBuilder to make the order of insertions and removals configurable.
  • About the system: Provides a set of queries for the status of Squeak's continuous integration builds. Adds Smalltalk interpreterVMMakerVersion for diagnostics.
  • Cleans up preference categories, removes obsolete preferences, and increases the robustness of loading deprecated preferences. Stabilizes default values for historic preferences.
  • Cleans up and stabilizes locale identification and switching. Adds an interface to determine the local timezone.
  • Cleans up opening of the sources file and tunes well-known locations for finding the sources file.
  • Removes manual line breaks from dialog texts and gives the responsibility to UI frameworks to compose the text.
  • Lots of further clean-ups all over the package. Removes obsolete Abort class. Work continues on decoupling the System package from other packages such as Morphic and Etoys.
  • Stability improvements. In particular, the robustness of the shutdown/startup cycle when closing and reopening the image is improved.
  • Several bugfixes to ImageSegment deserialization, MailSender >> #userPassword, Smalltalk forceChangesToDisk, Smalltalk patchSystem, ThirtyTwoBitRegister, and many other protocols.
  • Multiple speed-ups. In particular, the performance of fetching locale strings via #translated is improved drastically.
  • Extends documentation.

Morphic (up to Morphic-ct.2006)

Etoys (up to EToys-ct.477)

  • Adds code-to-tile conversion that can be triggered from a script editor by choosing "show code textually" from the menu.
  • Adds the new chess 960 game, a version of classical chess with random starting positions in home ranks, which also comes with a refurbished UI.
  • Work continues on untangling Etoys from other packages by extracting stuff to the packages MorphicExtras, Protocols, and Connectors.
  • Stability improvements to keep classical Etoys projects loadable.
  • Fixes missing icons when the Etoys mode is not activated.
  • Many bugfixes and stability improvements to the mines game, same game, MonthMorph, CalendarMorph, tiles layout, the MIDI keyboard piano, the SoundPlugin, and SyntaxMorph.
  • Miscellaneous improvements to multilingual support, clean-ups, and deprecations.

ST80 (up to ST80Tests-mt.8)

  • Work continues on improving convenience of the flexible scale factor.
  • Adds inspect item to to the blue-button menu of windows.
  • Fixes high CPU load during empty world, when opening menus, and while scrolling lists in MVC projects.
  • Improves MVC compatibility for some tools such as the change set browser or the debugger.
  • Miscellaneous clean-ups and stability improvements (inter alia, concerning home and key handling and auto-indenting in MVC text editors, and the "Force transcript updates to screen" preference).

GetText (up to GetText-mt.51)

  • No significant changes.

Multilingual (up to Multilingual-mt.285)

Help (up to HelpSystem-Core-mt.140)

  • Enhances the help browser with a tree menu to inspect/explore/browse help topics.
  • Adds support for blurbs in custom help books.
  • Moves up #priority to AbstractHelpTopic for ordering help topics.
  • To the system reference of a class, adds superclasses as well.
  • Updates tutorial on command key mappings.
  • Improves information on VMs on the welcome page.
  • Clean-ups and stability improvements regarding help-topic authoring and searching in the help browser.

Tools (up to Tools-mt.1163)

ToolBuilder (up to ToolBuilder-Morphic-mt.316)

SUnit (up to SUnit-ct.143)

Nebraska (up to Nebraska-mt.59)

  • No significant changes.

Services (up to Services-Base-ct.72)

  • Removes the "create new service" item from the method-list menu.
  • Minor stability improvements to the services browser.
  • Improved compatibility for MVC.

Shout (Syntax Highlighting) (up to ShoutCore-mt.93)

SystemReporter (up to SystemReporter-ct.61)

  • Adds a new report about existing packages in the image.
  • Adds a new report about locales in the image.
  • Improves report on image fonts.
  • Revises labels and display of VM parameters and includes several new flags and stats.
  • Report preferred bytecode set in the image report.
  • Minor stability improvements.

Installer (VersionNumber, UpdateStream, Squeak-Version) (up to Squeak-Version-mt.5368)

  • Updates packages definitions for FFI.
  • Fixes an issue with viewing changeset conflicts.
  • Minor clean-ups, improvements to multilingual support, and documentation.

Monticello (up to MonticelloConfigurations-dtl.178)

  • Adds MCConfigurationExtended as a tool for versioning Monticello configurations.
  • Introduces URL rewrite rules in HTTP repositories and uses them to enforce HTTPS for the source.squeak.org server.
  • Improves support for saving and loading traits and FFI structures.
  • Honors custom environments while loading traits and scripts.
  • Adds MCMcmUpdater >> #dependentPackages for convenience.
  • Improves overall dialog convenience and multilingual support. Adds a new menu item in version dialogs for filtering out unchanged methods that only have a different timestamp.
  • Shows the current CI status in the update dialog.
  • Fixes the "reparent" button in version inspectors.
  • Fixes wrong execution order of preamble and postload scripts during loading and unloading of packages.
  • Miscellaneous stability improvements. Improves support for MVC.
  • Miscellaneous speed-ups and clean-ups.

SqueakMap (up to SMLoader-ct.98)

  • Minor clean-ups and deprecations.

Tests (up to Tests-mt.491)

  • Adds overall test coverage. Improves robustness and eliminates side-effects of several tests.
  • There are now over 5000 tests in this release that run in less than 3 minutes on our CI.

ReleaseBuilder (up to ReleaseBuilder-ct.235)

  • Improves the reproducibility of the image state by resetting all pragma preferences to the default values specified in their declarations, and by resetting all old-style preference default values to their current values.
  • Includes The Inbox and The Treated Inbox into the known Monticello repositories by default.
  • Updates Unicode database when building a new image.
  • Improves changelog generation.
  • Minor UI improvements.
  • Miscellaneous improvements to stability, multilingual support, and documentation.

Major Deprecations

Known Issues

Compatibility Notes

  • SqueakSSL is not supported under Ubuntu 16.04 LTS.
  • All code literals are read-only with the new bytecode set SistaV1. If you used to perform inline modifications such as 'hello' at: 1 put: $y or #(1 3 2) sort, you will need to copy the literal first. Brace expressions are not affected.
  • Identity forwarding via #becomeForward: or #elementsForwardIdentityTo: does no longer copy the hash. Append copyHash: to the selector to override the default behavior.
  • Tests that signal an unhandled warning will now be considered as errored, even if the warning does not raise a debugger.
  • UIManager >> #chooseFrom* will no longer present the values as buttons. When requesting a choice from a small number of options, clients should migrate to the new UIManager >> #chooseOptionFrom* interface.
  • Process >> #terminate will now consistently execute all unwind contexts which may include the top context of the process. This implies that in rare cases sending #terminate to a process will not interrupt the current control flow immediately.
  • Process >> #suspend will no longer unblock a process that has been waiting for a semaphore or a mutex, but return to the blocked state after being #resumed. To manually unblock a process indeed, send #suspendAndUnblock instead.
  • In SyntaxErrorNotification, #resume: was renamed to #retryWithNewSource: to clarify that the control flow will not just resume but compilation will be retried.
  • #asMutator is back to preserve the well-known Smalltalk legacy and improve the backward compatibility for projects such as Seaside. However, new code should use #asSimpleSetter instead.
  • The default value for #allowBlockArgumentAssignment is now enforced, which means disabled. Your project might have to enable this preference again if you want to assign to block arguments.
  • Legacy US-layout-specific keyboard shortcuts for enclosing the selection with brackets have been disabled by default. They are still available through the Legacy keyboard shortcuts preference. For all default shortcuts, read the help.