*** 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. /^(o.o)^\ /^(o.o)^\ /^(o.o)^\ /^(o.o)^\ /^(o.o)^\ Detailed Improvements in Language, Tools, and the Environment ~~~ Core Language ~~~ Kernel (up to Kernel-ct.1482) - Switches the default bytecode set to SistaV1. This lays the basis for a new generation of VM optimizations (Sista: Speculative Inlining Smalltalk Architecture). With Sista, blocks are represented by CompiledBlocks and instantiated as FullBlockClosures, the stability of which has been improved in the course of this switch (fixed bugs in FullBlockClosure >> #= and InstructionStream >> #scanForInstructionSequence:). Provides new encoding accessors. - Adds full support for read-only objects that is backed by a VM-side write barrier bit. If an attempt is made to manipulate a read-only object, a ModificationForbidden error will be signaled. Some objects are read-only by default. - Numbers: Adds new testing selectors Number >> #hasLimitedPrecision and Float >> #isDenormal. Accelerates SmallInteger >> #highBit by connecting it to a new VM primitive. Adds utiliies for converting floats from/into IEEE representations. Fixes bugs in Complex arithmetics, Float >> #isPowerOfTwo, Float >> #log2, LargePositiveInteger >> #sqrt, and SmallInteger >> #sqrt. - Simulation and debugging: Completion and fixes for the simulation of Objects as Methods, #doesNotUnderstand:, and several bytecodes and primitives. Protects the simulation machinery against internal simulator errors which previously could blow up your image. Upgrades Context class >> #runSimulated: to a synchronous entry point into the simulator. - Process management: Makes Process more robust against invalid instantiation and termination attempts. Revises #suspend to remember any semaphore or monitor that the receiver has been waiting for and restore the waiting state in #resume (the old behavior is available via #suspendAndUnblock). Fixes several bugs in reading the state of processes and terminating them. In particular, reinforces that all unwind (#ensure:) contexts will be executed during termination (which may include the top context of the process). Adds #terminateAggressively to skip all active unwind contexts. Fixes bugs in ProcessorScheduler >> #highestPriority: and ProcessorScheduler >> #anyProcessesAbove:. Improves convenience of Process >> #printString. - Bugfixes and improved robustness during exception handling. - BlockClosure: Adds #whileNil, revises return values of #whileNil: and #valueWithExit. - Fixes some implementations of #copy. - Work continues on streamlining ProtoObject and making it understand as few messages as possible. - Switches identity forwarding to not copy the hash by default. - Work continues on improving the compatibility of Promise with the Promise/A+ specification. - Adds a #defaultBase: parameter to NumberParser. - In #caseOf:otherwise:, adds support for unary otherwise blocks. - Simplifies the compilation protocol on ClassDescription. Robustizes decompilation against syntax errors. Adds utility methods on SharedPool and on CompiledMethod. - Adds a new preference for turning off logging of compilations to changes file. - Revises some event sensor constants and fixes the timestamps of synthesized events. - Work continues on decoupling Kernel from UI frameworks. - Improves weak typing of collections for math functions. - Softly deprecates #ifNotNilDo:, #ifNil:ifNotNilDo: and #ifNotNilDo:ifNil:; please switch to their pendants without 'Do'. - Miscellaneous speed-ups (#cull:[cull:], Integer rounding) and clean-ups (ByteSetEncoder, ClassBuilder, source pointers, minor deprecations). Collections (up to CollectionsTests-ct.377) - Subsumes all non-pointer array classes under the new superclass RawBitsArray: splits up FloatArray into Float32Array and the new VM-optimized Float64Array; extracts superclass UnsignedIntegerArray from [Double]ByteArray and [Double]WordArray; extracts RawBitsArray from UnsignedIntegerArray, ColorArray, and FloatArray. Adds Signed variants for UnsignedIntegerArray and all subclasses. - Increases precision of intervals of floats by extracting new subclass LimitedPrecisionInterval. - Improves compatibility of Streams with the Collection protocol. - Adds new capabilities to the collection hierarchy: There are now Collection >> #symmetricDifference: and SequenceableCollection >> #indicesOfSubCollection:[startingAt:]. - Adds Collection >> #sortedSafely and Dictionary >> #replace:, #withKeysSorted:, and #withKeysSortedSafely. - Adds SequenceableCollection >> #at:ifPresent: and SequenceableCollection >> #atLast:ifPresent:[ifAbsent:]. - Implements removal on RunArray. - Improves stability of SharedQueues and lets them understand #peekLast. - Adds convenience protocol for enumerating SparseLargeTables. - Adds convenience constructors to PluggableDictionary and PluggableSet. - Updates the list of character constants and separators. - Fixes String >> #beginsWith: and String >> #endsWith: to answer true for empty affixes. - Adds convenience selectors on Text for removing or replacing attributes and configuring fonts. - Improves polymorphy between Text and String. - To HtmlReadWriter, adds support for tags and improves support for tags. Implements missing HTML conversion on TextURL. Adds Text >> #printHtmlOn:breakLines: for convenience. - Refactors TranscriptStream implementation and fixes the redirectToStdout mode. - Refactors initialization and clean-up of collections and symbols. - Deprecates SequenceableCollection >> #doWithIndex: and #collectWithIndex: in favor of #withIndexDo: and #withIndexCollect:. - Overall improvements to stability, performance, test coverage, and documentation. Chronology (up to Chronology-Core-ct.80) - Automatically updates the image time zone every 30 minutes. - Honor nanoseconds in Time >> #addSeconds: and DateAndTime >> #printString:. - Adds support for more compact print strings of DateAndTimes (#printHMOn:). - Extends DateAndTime class >> #readFrom: to accept offset strings without a colon according to the RFC 822 specification. - Adds precise #busyWait on Duration as an alternative to the existing idle #wait. - Provides Time class >> #millisecondClock and DateAndTime class >> #millisecondClock (no 45-daily roll-over). - Deprecates #totalSeconds and #millisecondClockValue on DateAndTime; use Time class >> #millisecondClock instead. - Changes Number >> #second to no longer trim off the magnitude of the receiver. That is, 3 second now equals 3 seconds (plural). - Improves compatibility between durations and collections of durations. - Optimizations. Compiler (up to Compiler-mt.476) - All compiled literals will now be read-only objects. - Fixes text selection during interactive error handling; decouples the parser from the requesting UI frameworks. - Allows canceling compilation if an unused variable is detected. - Changes the default return value of a do-it from nil to self. - Extends parser hooks to be used by FFI or similar for parsing custom pragmas and external function declarations. Provides Scanner class >> #isMessageSelector: as a convenience. - Miscellaneous fixes to the decompiler: improves support for FullBlockClosure, makes sure that decompiled ASTs can emit correct bytecode again, and handles many further edge cases correctly. - Upgrades and corrects CompilationCue to have full control over a compilation request. - Cleans up SyntaxErrorNotification to honor all compilation parameters from a CompilationClue during recompilation. Renames #resume: into #retryWithNewSource:. - Makes UndeclaredVariableNotification a notification and deprecates the former UndeclaredVariableWarning. Adds new ShadowedVariableNotification. - Several bugfixes and improvements to documentation. Environments (up to Environments-ul.84) - Minor stability improvements to EnvironmentRequest and uninstallation of environments. - Fixes return value of Environment >> #removeKey:ifAbsent:. 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 & Sound ~~~ Graphics (up to Graphics-ct.521) - Major clean-up and improvements of fonts: Fixes several bugs related to font rendering, spacing, scaling, and text composition. Defaults all pre-rendered fonts to 96 ppi. - Overhauls parsing of GIF files and fully aligns it to the GIF spec. Deprecates AnimatedGIFReadWriter, normal GIFReadWriter will treat all GIF images as a potential series of image frames. - Improves and extends fallback mechanism for fonts and text styles. - Extends AbstractFont interface with new accessors (#subfamilyName), converters (#asRegular, #larger, #smaller), and test selectors (#hasFixedWidth). Deprecates 'ascii' selectors in favor of modern 'codePoint' vocabulary. - Adds public 'text composition' protocol on TextStyle. - Improves display of multiple TextAnchors. Adds convenience selector Form >> #asTextAnchor. - Adds Color class >> #named:, Color >> #veryMuchDarker, and improves the printString of translucent colors. - Changes the object format of LayoutFrame to remove nil values from all fields. Adds convenience selector #fullFrame. - Improves geometry convenience by adding Point >> #exactCenter:, Rectangle >> #pointAtFraction:, and Rectangle >> #randomPoint[:]. - Adds new preference to turn off form compression before saving the image. - Provides new Form combination rules for alpha BitBlt composition. - Performance enhancements to text rendering. - Miscellaneous clean-ups, stability enhancements, and improved test coverage. - Overall improvements to documentation. 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) - Fixes wave sound streaming on non-filestream objects. - Adds convenience selectors to MIDIScore and TempoEvent. - Improves performance of synchronous sound playing. - Miscellaneous stability improvements concerning the sound player process, AIFF importing, FFT, MixedSounds, and the SoundRecorder protocol. ~~~ Network ~~~ 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. ~~~ System Services & Files ~~~ Files (up to Files-ct.193) - Work continues on supporting different types of objects dropped from the host system. - Increases robustness against interruptions in StandardFileStream >> #open:forWrite: to avoid primGetPosition: failures and dangling file pointers. - Speeds up StandardFileStream >> #upToEnd. Compression (up to Compression-xw.63) - Adds a new preference to cache a compressed copy of the sources file in the image to avoid I/O access to the file system. - Speeds up CompressedSourceStream >> #contentsOfEntireFile significantly and improves progress reporting. - Improves robustness and internal test coverage. 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 {,}. - 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. ~~~ GUI Frameworks ~~~ Morphic (up to Morphic-ct.2006) - Work continues on reconstructing Objectland (also known as "The Worlds of Squeak"), a colorful collection of examples demonstrating the multifarious capabilities of Squeak. - Refurbishes font importer and font chooser tools. To the font importer, adds means to browse a font before installing it, uninstall an installed font again, and apply it as a default system font. To the font chooser, adds support for TrueType and not-yet-installed fonts. - Reworks the mapping of keystrokes to virtual keys for better cross-platform consistency. Try them out interactively or browse the available preferences. - Provides the new layout policy GridLayout as an extract and overhaul from PasteUpMorph. - Provides and cleans up Morphic layers as a general concept that was previously only available for Worlds in Worlds. Try it out!! - Lets file-drag/drop events from the host system arrive as regular drag/drop events in the image and deprecates DropFilesEvent. You can now drag files from your operating system straight into a workspace or an inspector field!! - Adds support for dropping source-code artifacts into the world to spawn a new code editor. - In the main docking bar, adds a new changes menu that provides fast access to recently edited methods. To the windows menu, adds a new "Find workspace..." item. To the tools menu, adds Squeak Inbox Talk (third-party) for engaging with the community from the image. Promotes our new issue tracker in the help menu. Makes the search bar honor the "reuse windows" preference. - Makes text in dialog boxes interactive and wraps it automatically. Tweaks windows' menu buttons to act on mouseDown instead of mouseUp like the world menu. - Fixes visual appearance and robustness of mini editors. - Makes the result of print-its interactive - you can click the result to inspect it. This is configurable via a new preference. - Cleans up configuration of text styles and fonts for text morphs. Adds new properties #plainTextOnly and #averageLineLength. Adds a preference to enable line wrap at visual border in browsers. - Increase default spacing in lists. Classic appearance is still available through 'compact' preferences. - Revises editor shortcuts for enclosing the selection with brackets and enables them by default. Brackets can be nested and unnested by typing multiple opening/closing brackets. Disables US-keyboard-specific shortcuts but preserves them via a preference. - Revises editor shortcuts for styling the selection. Read up all shortcuts in the help. - Maintains editor undo history after canceling (Cmd + L). - Adds support for font changes in list items. - Improves keyboard navigation by automatically setting the keyboard focus in newly opened windows. Clients can specify a custom default focus. - Adds support for multiple cameras to WebCamMorph and upgrades the CameraInterface. - Adds support for new window events #windowChangedScreen and #windowDeactivated. Makes the image-wide keyboard focus consistent with the current focus of the host window. - Adds halo support for protruding submorphs if the preference "halo encloses full bounds" is enabled. Inverts that preference while holding the control key during halo invocation. - Morph protocol: Adds the possibility to handle #ownerChanged through composition (instead of subclassing/overwriting). Adds observer protocol for handling scale factor changes. Revises the properties protocol to follow the return value semantics from collections. Provides #pointAtFraction: for convenience. - To editors, adds support for new optional model hooks #evaluateExpression:requestor: and #debugExpression:requestor:. - Refactors the global variables ActiveWorld, ActiveHand, and ActiveEvent. Clients shall now refer to Object >> #currentWorld, #currentHand, and #currentEvent instead. - Adds a new preference category for accessibility-related settings. - Miscellaneous clean-ups regarding PasteUpMorph, invocation of halos, FrameRateMorph, and many other areas. - Fixes horizontal scrolling. - Improves support for custom scale factors in various places (cursors, text carets, scroll bars, grips, ...). - Clean-ups and repairs the preference #disableDeferredUpdates and auto-configures it per platform. - Various stability improvements regarding drag-and-drop behavior, hierarchical list rendering, windows and splitters, button menus, text editing, sketches, halos, the elements in the objects tool, the cmd+dot interrupt mechanism, canvases, and general layout concerns. - Speed-ups for animated images, the camera interface, window menus, pluggable lists, morph resizing, and text composition. - Improves overall test coverage and documentation. 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). ~~~ Help & Internationalization ~~~ GetText (up to GetText-mt.51) - No significant changes. Multilingual (up to Multilingual-mt.285) - Fixes file-in/out for non-UTF8 encodings. - Fixes latin-1 tables for EUC converters. - Improves support for Japanese (Shift-JIS) and Cyrillic (KOI-8) encoding. - Renames CNGBTextConverter to EUCCNTextConverter. - Fixes various encoding issues for several environments; in particular, eliminates double utf8->squeak conversion via MultiByteFileStream >> #nextChunk. - Updates Unicode metadata and adds new protocol for determining the category of a codepoint. - Speeds up MultiByteFileStream >> #upToEnd. - Several clean-ups, refactorings, and stability improvements. 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. ~~~ Programming Tools ~~~ Tools (up to Tools-mt.1163) - Major overhaul of the inspector family: Provides richer and clearer extension points and offers new domain-specific specializations (among others, for bags, character sets, forms, morphs, and blocks). Allows adding custom fields to individual inspector instances through the yellow-button menu. Adds drag'n'drop support to the field list. Adds support for ProtoObjects such as proxies in the basic inspector. - Revises display of numbers in the explorer. - Enhances the dependency browser: Adds support for extension methods, shared pools, and applies further UX improvements. Makes it possible to explore upstream dependencies. - Merges the browser's "find class" and "recent classes" menus. - To the system category menu of browsers, adds a package submenu for browsing the package, its extensions, and its dependencies. - To hierarchy browsers, adds support for traits. To the menu of a trait, adds an item for browsing all its users. - Adds an option to scan the changes files for removed method versions. - Revises the "save contents to file" mechanism of workspaces. Adds a preference for file workspace contents on accept. - Adds a preference to embed a transcript in workspaces and another one to automatically declare variables in them. - Makes code holders useful by themselves. - Revives the classical change set browser. - In the process browser, allows suspending UI processes. - Improves confirmation dialogs before removing methods, classes, or system categories. - Revises behavior of message traces for appending vs. detaching new implementors/senders. - Adds queries for browsing all glyphs of a font or all method sources that contain Unicode characters. - Minor UI improvements and speed-ups to the preference browser and the preference wizard. - Revises "copy as html" menu item in browsers to honor the current text selection. - Fixes TextLinks to the comment, definition, or hierarchy of a class. - Improves the visibility of failing menu builders. - Miscellaneous stability and UX improvements to all our beloved tools (including browsers, change lists, change sorters, debuggers/editing code from debuggers, the browse/debug button action feature, file lists, inspectors, explorers, message sets, process browsers, protocol browsers and lexicons, and the versions browsers). - Several optimizations to method removal from message traces and to the debugger's "run to here" feature. - Miscellaneous clean-ups, improvements to the test coverage, and enhancements of the documentation. ToolBuilder (up to ToolBuilder-Morphic-mt.316) - Adds new #chooseOptionFrom* interface on UIManager (example) and always uses a list display for the #chooseFrom* interface. - Adds convenience methods for tool building on Model. - For pluggable lists, makes dropAccept optional. Adds a property for configuring the drag type for list items and tree items. - Adds a property for configuring the text style of texts and adds support for font symbols. - Adds layout hints protocol on ToolBuilder for common widgets. - Improves convenience of ProvideAnswerNotification for #chooseFrom* requests by the ToolBuilder. - Reduces the set of abstract core methods that subclasses of UIManager need to implement. - In file dialogs, sorts subdirectories case-insensitively. - Improves the layout of list choosers. - Fixes a bug in system progress bars that interfered with signaled exceptions. - Work continues on improving the construction polymorphy between menu specs and menu morphs. - Minor UI and stability improvements to several dialogs. SUnit (up to SUnit-ct.143) - Treats warnings in test cases like errors. - Refactors and completes the equality assertions protocol so that we have all #(assert|deny):(equals|identical):[description:] selectors. - Adds #shouldRaiseError: convenience. Deprecates #shouldFix: and TestResult class >> #error. - Revises debugging support for test cases to also cover the #setUp/#tearDown logic. - Improves test case search in browsers' class menus and allows to create a new test if no existing is found. - Adds TestCase class >> #has[Errors,Failures,Defects]. - Avoids checking in stored test results to version controlled packages. - Updates widget stubs for tests. - ClassTestCase: Deprecates #targetClass in favor of #classToBeTested. - Minor clean-ups and stability improvements to the test runner. Adds items to the class list menu for selecting all failures or errors. - Improves internal test coverage and documentation. 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) - Adds a hook for custom pragma parsers. - Repairs the preference "syntax highlighting as you type". - Miscellaneous clean-ups, speed-ups, and stability improvements. 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. ~~~ Version Control & Package Management ~~~ 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. ~~~ Deployment & Misc. ~~~ 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 - Deprecates SequenceableCollection >> #doWithIndex: and #collectWithIndex: in favor of #withIndexDo: and #withIndexCollect:. - Deprecates #ifNotNilDo:, #ifNil:ifNotNilDo: and #ifNotNilDo:ifNil:; please switch to their pendants without 'Do'. - DropFilesEvent is deprecated but stays functional until the package 60Deprecated is unloaded. Users should move away from Morph >> #(handle|wants)dropFiles to use #acceptDroppingMorph:event: and #wantsDroppedMorph:event: and to check #dragTransferType for #filesAndDirectories. Known Issues - Lookbehinds in regular expression are not yet considered stable. Inserting them into a nullable closure currently causes a MessageNotUnderstood error. Also, matching is not optimized and currently has a quadratic runtime complexity. 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. ("\(^.^)/") ("\(^.^)/") ("\(^.^)/") !!!!!! THANK YOU ALL FOR YOUR CONTRIBUTIONS !!!!!! ("\(^.^)/") ("\(^.^)/") ! ]style[(32 198 15 30 14 19 19 29 20 28 20 229 1 82 18 2 12 6 19 18 4 31 1 22 3 61 3 21 2 14 14 1 16 24 7 1 63 50 41 14 21 17 87 22 5 49 16 18 26 17 106 21 25 12 29 8 28 30 5 20 14 24 77 4 1 4 37 7 14 22 2 14 2 29 6 21 4 25 44 18 2 19 14 9 5 10 2 8 112 31 52 19 7 7 77 8 17 9 4 7 73 7 36 18 25 17 18 11 50 8 104 22 51 39 5 41 26 23 44 19 3 13 6 9 27 10 5 14 10 4 1 15 44 11 66 19 85 7 10 10 25 13 33 19 59 11 100 13 5 17 9 16 73 22 118 11 303 19 23 2 51 15 12 1 11 10 6 12 26 12 22 20 7 6 1 9 6 6 1 9 51 10 23 6 127 24 13 13 109 35 5 50 13 9 27 5 23 2 16 6 21 9 40 5 44 1 9 16 7 76 9 34 29 37 19 5 12 24 19 5 10 10 22 5 20 67 4 91 4 18 14 19 10 26 11 40 7 7 32 30 16 30 16 163 13 5 18 28 9 2 11 21 13 3 18 21 1 86 20 5 28 65 11 13 31 26 15 18 21 17 9 52 5 13 31 5 38 100 31 20 17 63 8 12 9 102 16 15 1 37 17 32 26 138 20 17 3 4 4 58 22 46 36 81 16 138 14 62 23 104 20 10 30 78 28 57 20 18 1 35 18 61 35 3 14 14 1 41 19 19 1 74 24 2 16 15 1 3 35 5 1 132 67 42 13 89 18 38 12 31 14 15 10 2 7 2 8 23 14 89 27 46 11 28 21 9 22 2 24 68 13 4 11 65 10 44 22 2 30 6 25 1 1 10 14 70 22 198 15 13 1 28 24 14 4 44 14 398 17 38 17 7 7 79 23 107 13 11 1 33 22 34 9 5 10 28 25 78 4 12 3 2 11 10 13 13 15 2 15 19 1 54 3 13 23 70 19 30 14 89 17 21 4 52 17 21 1 56 8 89 28 9 18 118 11 16 1 29 31 2 13 12 1 32 26 79 37 76 30 3 19 17 1 14 10 12 15 86 47 99 13 22 1 55 44 98 8 94 14 15 1 17 32 31 25 22 27 81 25 12 142 19 9 14 53 3 43 10 107 10 87 15 107 15 4 7 72 18 110 17 54 15 37 4 15 6 66 17 22 6 38 7 15 22 15 11 87 16 9 14 34 24 65 9 4 15 13 2 1 2 73 14 19 38 7 35 30 10 21 20 145 6 66 14 455 8 1 7 109 27 2 28 2 21 2 20 112 11 53 22 2 15 15 1 3 82 1 92 12 13 5 12 7 225 7 82 26 4 33 34 10 33 12 27 14 79 11 114 14 68 9 7 15 21 8 104 12 87 19 31 17 94 16 12 10 11 26 31 11 5 22 9 21 105 12 34 11 74 10 14 13 63 14 5 18 9 10 134 21 75 7 164 10 85 4 220 7 64 11 18 15 25 13 1 20 5 18 116 20 8 38 93 5 42 13 64 17 48 19 65 17 74 30 5 27 104 23 2 12 6 13 19 23 108 14 204 23 185 8 2 5 22 12 6 27 57 15 6 16 124 13 12 1 139 14 430 10 2 9 2 10 2 13 20 19 120 12 14 1 476 47 5 35 2 15 13 1 28 20 19 1 72 14 25 20 5 16 42 18 121 33 12 7 52 8 29 31 66 12 22 1 16 12 76 6 34 9 57 27 39 32 160 25 2 13 13 1 3 22 9 8 29 16 32 15 20 4 2 14 2 5 2 6 6 6 158 12 9 7 46 7 34 18 110 29 99 8 224 4 99 10 9 10 49 10 41 11 53 12 47 18 11 15 144 14 83 20 4 18 79 18 9 17 12 24 58 9 8 7 2 10 5 9 50 13 84 8 2 12 2 14 2 9 34 26 10 10 2 10 2 9 2 12 2 16 2 17 5 8 10 17 87 13 112 19 26 1 12 18 25 7 41 12 43 22 8 15 8 10 47 9 70 10 31 12 9 21 62 25 5 12 92 9 25 12 68 13 19 20 109 10 5 11 61 13 12 4 7 8 27 3 28 28 88 18 25 11 5 26 12 17 34 6 1 9 125 22 1 6 1 8 1 7 24 19 43 12 14 13 13 12 13 16 177 13 3 16 14 1 28 16 19 1 106 16 37 35 15 1 10 4 42 44 69 22 20 2 7 12 46 12 50 11 34 13 82 12 36 44 2 63 22 2 168 18 32 1 8 23 66 17 61 17 51 6 91 34 233 13 35 18 215 17 14 1 39 26 2 13 12 1 118 10 56 2 3 22 21 1 235 9 5 17 117 20 114 18 89 13 5 18 120 14 119 6 1 5 18 27 5 25 14 17 5 20 3 12 68 85 84 19 175 21 4 13 105 15 4 27 38 9 84 7 85 25 138 31 14 21 224 19 128 7 46 18 15 23 26 20 90 10 151 15 34 29 30 8 257 25 49 4 12 1 2 1 17 1 2 1 17 1 2 1 23 1 3 1 48 1 2 1 17 1 2 1 8 2)b,,Rcode://RealEstateAgent class>>#scaleFactor;,,Rcode://TheWorldMainDockingBar instance fontSizeSummary;,,Rhttps://github.com/OpenSmalltalk/opensmalltalk-vm/releases/tag/202205110711;,,Rcode://(Preferences preferenceAt: #'CompiledCode>>preferredBytecodeSetEncoderClass') open ;,,Rcode://SystemReporter open;,,cred;,,b,,b,,b,,c170170170,bc170170170,Rcode:// self inform: 'Congratulations, you found an easter egg!!';,bc170170170,,b,,bcgray;,,i,,i,,b,Rcode:// ToolSet browseClassCommentOf: EncoderForSistaV1;b,b,,Rhttps://wiki.squeak.org/squeak/6588;,,LCompiledBlock Comment;,,LFullBlockClosure Comment;,,LFullBlockClosure =;,,LInstructionStream scanForInstructionSequence:;,,Rcode:// ToolSet browseClass: CompiledCode class category: 'method encoding';,,Rcode:// ToolSet browse: Object selector: #beReadOnlyObject;b,,LModificationForbidden Comment;,,Rcode:// 'immediate%20objects%3A%20Characters%2C%20SmallIntegers%2C%20and%20SmallFloat64s%0Dsource%20code%20literals%20such%20as%3A%20nil%2C%20true%2C%20false%2C%203.141s%2C%20%23aSymbol%2C%20%27a%20string%27%2C%20%23%28%23array%20%27literals%27%29%2C%20but%20not%20%7B%23brace.%20%23expressions%7D%29%21%0D%5Dstyle%5B%2817%201%201%2010%202%2013%206%2013%201%2020%2010%203%202%204%202%205%202%206%202%208%202%2010%202%201%201%206%201%2010%2012%206%202%2012%202%29Rcode%3A%2F%2F%20%27Smalltalk%20allClasses%20select%3A%20%23isImmediateClass%27%20edit%3BFBitmap%20DejaVu%20Sans%2314b%2CFBitmap%20DejaVu%20Sans%2314b%2CFBitmap%20DejaVu%20Sans%2314%2CLCharacter%20Comment%3B%2CFBitmap%20DejaVu%20Sans%2314%2CLSmallInteger%20Comment%3B%2CFBitmap%20DejaVu%20Sans%2314%2CLSmallFloat64%20Comment%3B%2CFBitmap%20DejaVu%20Sans%2314%2CFBitmap%20DejaVu%20Sans%2314b%2CFBitmap%20DejaVu%20Sans%2314%2Cc114000000FBitmap%20DejaVu%20Sans%2314%2CFBitmap%20DejaVu%20Sans%2314%2Cc114000000FBitmap%20DejaVu%20Sans%2314%2CFBitmap%20DejaVu%20Sans%2314%2Cc127000000%2CFBitmap%20DejaVu%20Sans%2314%2Cc127000000%2CFBitmap%20DejaVu%20Sans%2314%2Cc000000127%2CFBitmap%20DejaVu%20Sans%2314%2Cc114000114nFBitmap%20DejaVu%20Sans%2314%2CFBitmap%20DejaVu%20Sans%2314%2Cc000000114FBitmap%20DejaVu%20Sans%2314%2CFBitmap%20DejaVu%20Sans%2314%2Cc000000114FBitmap%20DejaVu%20Sans%2314%2CFBitmap%20DejaVu%20Sans%2314%2Cc114000114nFBitmap%20DejaVu%20Sans%2314%2CFBitmap%20DejaVu%20Sans%2314%2Cc000000114FBitmap%20DejaVu%20Sans%2314%2CFBitmap%20DejaVu%20Sans%2314%2Cc000000114FBitmap%20DejaVu%20Sans%2314%2CFBitmap%20DejaVu%20Sans%2314%21' unescapePercents readStream nextChunkText editWithLabel: 'Objects that are read-only by default';,,b,,LNumber hasLimitedPrecision;,,LFloat isDenormal;,,LSmallInteger highBit;,,Rcode:// ToolSet browse: Float class selector: #fromIEEE64Bit:;,,Rcode:// ToolSet browse: Float selector: #asIEEE64BitWord;,,LComplex Definition;,,LFloat isPowerOfTwo;,,LFloat log2;,,LLargePositiveInteger sqrt;,,LSmallInteger sqrt;,,b,,Rcode:// TestObjectsAsMethods browse;,,c000000085Rcode:// ToolSet browse: Object selector: #doesNotUnderstand:;,,LInstructionStream interpretNextInstructionFor:;,,Rcode:// ToolSet browse: Context selector: #doPrimitive:method:receiver:args:;,,Rhttp://forum.world.st/Please-try-out-Fixes-for-debugger-invocation-during-code-simulation-td5127684.html;,,LContext class runSimulated:;,,b,,LProcess Definition;,,LProcess suspend;,,Rcode:// Semaphore;,,Rcode:// Monitor;,,LProcess resume;,,LProcess suspendAndUnblock;,,Rcode:// ToolSet browseClass: Process category: #testing;,,Rcode:// ToolSet browse: Process selector: #terminate;,,c000000085Rcode:// ToolSet browse: BlockClosure selector: #ensure:;,,Rcode:// (Process >> #terminateAggressively) browse;,,LProcessorScheduler highestPriority:;,,LProcessorScheduler anyProcessesAbove:;,,LProcess printString;,,b,,b,,Rcode:// ToolSet browse: BlockClosure selector: #whileNil;,,Rcode:// ToolSet browse: BlockClosure selector: #whileNil:;,,Rcode:// ToolSet browse: BlockClosure selector: #valueWithExit;,,Rcode:// ToolSet browse: Model selector: #postCopy;,,RToolSet browse: Context selector: #copyTo:;,,LProtoObject Definition;,,Rcode:// ToolSet browse: Object selector: #becomeForward:;,,LPromise Comment;,,Rhttps://promisesaplus.com/;,,Rcode:// (NumberParser >> #defaultBase:) browse;,,Rcode:// (Object >> #caseOf:otherwise:) browse;,,Rcode:// ToolSet browseClass: ClassDescription category: 'compiling';,,Rcode:// ToolSet browse: SharedPool class selector: #declare:from:;,,Rcode:// (CompiledMethod >> #anyAndAllSelectorsDo:) browse;,,Rcode:// PreferenceBrowser open searchPattern: #logCompiledSources;,,LEventSensorConstants Definition;,,Rcode:// ToolSet browseMessageNames: 'adaptTo*:and*:';,,i,,i,,b,LRawBitsArray Hierarchy;b,b,,LFloatArray Definition;,,LFloat32Array Definition;,,LFloat64Array Definition;,,LUnsignedIntegerArray Hierarchy;,,LDoubleByteArray Definition;,,LByteArray Definition;,,LDoubleWordArray Definition;,,LWordArray Definition;,,LColorArray Definition;,,LSignedIntegerArray Hierarchy;,,LLimitedPrecisionInterval Definition;,,Rcode:// ToolSet browseClass: Stream category: 'collections - enumerating';,,LCollection symmetricDifference:;,,LSequenceableCollection indicesOfSubCollection:;,LSequenceableCollection indicesOfSubCollection:startingAt:;,,LCollection sortedSafely;,,LDictionary replace:;,,LDictionary withKeysSorted:;,,LDictionary withKeysSortedSafely;,,LSequenceableCollection at:ifPresent:;,,LSequenceableCollection atLast:ifPresent:;,,LSequenceableCollection atLast:ifPresent:ifAbsent:;,,Rcode:// ToolSet browseClass: RunArray category: 'removing';,,Rcode:// self systemNavigation browseAllImplementorsOf: #peekLast;,,Rcode:// ToolSet browseClass: SparseLargeTable category: 'enumerating';,,LPluggableDictionary class Definition;,,LPluggableSet class Definition;,,Rcode:// ToolSet browse: Character class selector: #constantNames;,,Rcode:// ToolSet browse: Character class selector: #separators;,,LString beginsWith:;,,LString endsWith:;,,LText Definition;,,LText Definition;,,LHtmlReadWriter Definition;,,Rcode:// Project uiManager edit: '%27%3Cimg%20src%3D%22code%3A%2F%2Fself%20currentWorld%20imageForm%22%3E%27%20asTextFromHtml%20edit.%0D%27%3Cimg%20src%3D%22https%3A%2F%2Fsqueak.org%2Fimg%2Fballoon_square.png%22%3E%27%20asTextFromHtml%20edit.' unescapePercents label: ' tags are there!!' shouldStyle: true;,,Rcode:// Project uiManager edit: '%27%3Cfont%20face%3D%22Accula%22%20size%3D%2212%22%3EHello%2C%20World%21%21%3C%2Ffont%3E%27%20asTextFromHtml%20edit' unescapePercents label: ' tag demo' shouldStyle: true;,,LTextURL Definition;,,LText printHtmlOn:breakLines:;,,LTranscriptStream Definition;,,Rcode:// PreferenceBrowser open searchPattern: 'redirectToStdOut';,,LSequenceableCollection withIndexDo:;,,LSequenceableCollection withIndexCollect:;,,Rcode:// self systemNavigation browseMessageList: #('Matrix atColumn:' 'Matrix transposed' 'OrderedCollection removeFirst:' 'OrderedCollection removeLast:' 'OrderedDictionary growTo:' 'Stream take:' 'String findSelector') name: 'methods with minor fixes';,,Rcode:// self systemNavigation browseMessageList: #('ByteArray readHexFrom:' 'Dictionary at:ifPresent:' 'Heap compact' 'Interval do:' 'KeyedSet add:ifPresent:' 'OrderedCollection do:' 'ReadStream match:' 'RunArray Definition' 'String =' 'String storeOn:' 'Symbol class condenseNewSymbols' 'WeakSet postCopy' 'WriteStream growTo:' 'WriteStream nextChunkPut:') name: 'optimized methods';,,Rcode:// ToolSet browseClassCommentOf: Character;,,i,,i,,LTime addSeconds:;,,LDateAndTime printOn:;,,LDateAndTime printHMOn:;,,LDateAndTime class readFrom:;,,Rcode:// '''1970-01-01T00:00:00.000+0000'' asDateAndTime' edit;,,Rhttps://datatracker.ietf.org/doc/html/rfc822#section-5.1;,,LDuration busyWait;,,LDelay wait;,,LTime class millisecondClock;,,LDateAndTime class millisecondClock;,,LTime class millisecondClock;,,LNumber second;,,b,,b,,i,,i,,Rcode:// ToolSet browse: Object selector: #beReadOnlyObject;,,Rcode:// Project uiManager edit: '"Do it!!" | x z | y := 1. z zöglfrex' label: 'Interactive error correction example' shouldStyle: true;,,Rcode:// Project uiManager edit: 'Compiler evaluate: '''' for: Object new' label: 'default return value' shouldStyle: true;,,b,,b,,Rcode:// self systemNavigation browseAllCallsOn: #pragmaParser;,,LScanner class isMessageSelector:;,,LFullBlockClosure Comment;,,LCompilationCue Comment;,,LSyntaxErrorNotification Comment;,,LSyntaxErrorNotification retryWithNewSource:;,,LUndeclaredVariableNotification Hierarchy;,,LShadowedVariableNotification Hierarchy;,,i,,i,,LEnvironmentRequest Definition;,,LEnvironment removeKey:ifAbsent:;,,i,,i,,i,,i,,bcgray;,,i,,i,,b,Rcode:// AbstractFont browseHierarchy;b,b,,b,,LGIFReadWriter Definition;,,Rcode:// ToolSet browseMessageNames: 'defaultFallback';,,LAbstractFont Hierarchy;,,LAbstractFont subfamilyName;,,LAbstractFont asRegular;,,LAbstractFont larger;,,LAbstractFont smaller;,,LAbstractFont hasFixedWidth;,,Rcode:// ToolSet browseClass: TextStyle category: 'text composition';,,Rcode:// Compiler evaluate: '%28%27%7B1%7D%20can%20even%20be%20%7B2%7D%20into%20each%20other%21%27%20asText%20format%3A%20%7B%27Text%20anchors%27%20asText%20allBold.%20Character%20startOfHeader%20asText%20addAttribute%3A%20%28%28%27%7B1%7D%20nested%20%7B1%7D%27%20asText%20format%3A%20%7BCharacter%20startOfHeader%20asText%20addAttribute%3A%20%28Form%20squeakLogo%20scaledIntoFormOfSize%3A%2024%20asPoint%29%20asTextAnchor%7D%29%20asMorph%20backgroundColor%3A%20Color%20yellow%3B%20asTextAnchor%29%7D%29%20edit.' unescapePercents;,,LForm asTextAnchor;,,LColor class named:;,,LColor veryMuchDarker;,,Rcode:// (self currentWorld findA: SystemWindow) firstSubmorph layoutFrame inspect;,,LLayoutFrame Definition;,,LLayoutFrame class fullFrame;,,LPoint exactCenter:;,,LRectangle pointAtFraction:;,,LRectangle randomPoint;,,LRectangle randomPoint:;,,Rcode:// PreferenceBrowser open searchPattern: #compressOnSnapshot;,,Rcode:// ToolSet browseClass: Form class category: 'mode constants';,,i,,i,,i,,i,,Rcode:// (TTCFont>>#install) browse;,,LTTFontDescription Definition;,,LTTFontDescription Definition;,,LTTCFont Definition;,,Rhttps://www.hethport.uni-wuerzburg.de/cuneifont/;,,i,,i,,Rcode:// Project uiManager edit: 'array%20%3A%3D%20ByteArray%20streamContents%3A%20%5B%3Astream%20%7C%0D%09PluckedSound%20bachFugue%20storeWAVSamplesOn%3A%20stream%5D.%0D%28FileStream%20fileNamed%3A%20%27bachFugue.wav%27%29%20binary%20in%3A%20%5B%3Astream%20%7C%0D%09%5Barray%20do%3A%20%5B%3Aea%20%7C%20stream%20nextPut%3A%20ea%5D%5D%0D%09%09ensure%3A%20%5Bstream%20close%5D%5D.%0D%28SampledSound%20fromWaveFileNamed%3A%20%27bachFugue.wav%27%29%20play.' unescapePercents label: 'Wave soudn streaming on non-filestream objects' shouldStyle: true;,,LMIDIScore Definition;,,LTempoEvent Definition;,,Rcode:// (AbstractSound>>#playAndWaitUntilDone) browse;,,Rcode:// AIFFFileReader;,,LFFT Comment;,,LMixedSound Definition;,,LSoundRecorder Definition;,,bcgray;,,i,,i,,Rcode:// HelpBrowser openOn: SqueakTutorialsOnXML;,,LHTTPServerDirectory Definition;,,Rcode:// ToolSet browseHierarchy: Url selector: #=;,,LMIMEDocument Definition;,,i,,i,,i,,i,,Rhttps://datatracker.ietf.org/doc/html/rfc7230;,,Rcode:// ToolSet browse: WebClient class selector: #httpPost:multipartFields:;,,Rcode:// (WebUtils class >> #jsonFromString:) browse;,,i,,i,,bcgray;,,i,,i,,Rcode:// ToolSet browseClass: FileDirectory class category: 'dnd requests';,,LStandardFileStream open:forWrite:;,,LStandardFileStream upToEnd;,,i,,i,,Rcode:// PreferenceBrowser open searchPattern: 'cache sources file';,,Rcode:// CompressedSources;,,LCompressedSourceStream contentsOfEntireFile;,,i,,i,,Rcode:// self systemNavigation browseMessageList: #('RxParserTest testNegativeLookahead' 'RxParserTest testNegativeLookbehind' 'RxParserTest testPositiveLookahead' 'RxParserTest testPositiveLookbehind') name: 'tests for lookaround expressions';,,b,,i,,i,,b,,Rcode:// (Lexicon new openOnClass: DoItFirst showingSelector: nil) chooseCategory: 'actions';,,++,,b,Rcode:// MenuMorph new in: [:menu | TheWorldMainDockingBar instance scaleFactorsOn: menu. menu popUpInWorld];b,,LUserInterfaceTheme Hierarchy;,,LObject class themePriority;,,Rcode:// ToolSet browse: UserInterfaceThemeRequest selector: #doesNotUnderstand:;,,Rcode:// (Preferences pragmaPreferenceFor: RealEstateAgent getter: #windowScaleFactor) open;,,LSpaceTally Comment;,,Rcode:// ChangeList browseRecentLog;,,Rcode:// ToolSet browseClass: ChangeSet category: 'class changes';,,Rcode:// ToolSet browseClass: ChangeSet category: 'method changes';,,Rcode:// | bar | bar := (self currentWorld mainDockingBars ifEmpty: [^ self]) first. bar selectItem: ((bar submorphs select: #isMenuItemMorph) at: 6) event: self currentEvent. bar selectedItem subMenu setProperty: #matchString toValue: 'annotation'. bar selectedItem subMenu displayFiltered: self currentEvent;,,Rcode:// self systemNavigation browseAllImplementorsOf: #fileIn;,,LSystemOrganizer Definition;,,Rcode:// ToolSet browse: ToolSet class selector: #browseEnvironment:;,,Rcode:// ToolSet browseEnvironment: Object newSubclass environment;,,Rcode:// (SystemNavigation>>#browseAllExtensionMethodsOfPackage:localTo:) browse;,,Rcode:// (SystemNavigation>>#allStoresInto:) browse;,,Rcode:// ToolSet class;,,Rcode:// (ToolSet class >> #browseClassCommentOf:) browse;,,Rcode:// ToolSet browseClassCommentOf: TextStyler;,,LSHTextStylerST80 Comment;,,Rhttps://github.com/hpi-swa-teaching/MarkdownEditor;,,Rcode:// Utilities setAuthorInitials;,,Rcode:// PreferenceBrowser open searchPattern: #showInsertBeforeRemove;,,LTextDiffBuilder Definition;,,Rcode:// Compiler evaluate: '%28TextDiffBuilder%20new%0D%09showInsertBeforeRemove%3A%20false%3B%0D%09from%3A%20%27Hello%20world%21%5CLong%20live%20Smalltalk%21%27%20withCRs%20%0D%09to%3A%20%27Hello%20Squeak%21%5CLong%20live%20Smalltalk%21%27%20withCRs%29%0D%09%09buildDisplayPatch%20edit' unescapePercents;,,Rcode:// Compiler evaluate: '%28TextDiffBuilder%20new%0D%09showInsertBeforeRemove%3A%20true%3B%0D%09from%3A%20%27Hello%20world%21%5CLong%20live%20Smalltalk%21%27%20withCRs%20%0D%09to%3A%20%27Hello%20Squeak%21%5CLong%20live%20Smalltalk%21%27%20withCRs%29%0D%09%09buildDisplayPatch%20edit' unescapePercents;,,Rcode:// ToolSet browseClass: SystemVersion category: 'continuous integration';,,Rhttps://github.com/squeak-smalltalk/squeak-app;,,LSmalltalkImage interpreterVMMakerVersion;,,Rcode:// PreferenceBrowser open;,,Rcode:// self systemNavigation browseMessageList: (#(abbreviatedBrowserButtons #allowEtoyUserCustomEvents #alternativeButtonsInScrollBars automaticPlatformSettings #compressFlashImages #defaultFileOutFormatMacRoman #dragNDropWithAnimation #extractFlashInHighestQuality #extractFlashInHighQuality #menuButtonInToolPane #translationWithBabel) collect: [:sel | 'Preferences class ' , sel]) name: 'Removed preferences';,,LLocale Comment;,,Rcode:// TimeZone class >> #local;,,Rcode:// (Behavior >> #shutDown) browse;,,Rcode:// (Behavior >> #startUp) browse;,,LMailSender userPassword;,,LSmalltalkImage forceChangesToDisk;,,LSmalltalkImage patchSystem;,,LThirtyTwoBitRegister Definition;,,Rcode:// self systemNavigation browseAllCallsOn: #translated;,,bcgray;,,i,,i,,Rhttp://forum.world.st/The-Inbox-MorphicExtras-ct-267-mcz-td5104764.html;b,b,,b,Rcode:// FontImporterTool open;b,b,Rcode:// (Project current world findA: SystemWindow) allMorphs detect: [:m | m isTextView and: [m text asString includesSubstring: 'font chooser']] ifFound: [:m | m textMorph chooseFont];b,b,,Rhttp://forum.world.st/Please-try-it-out-Fixing-the-input-mapping-for-keystroke-events-td5129004.html;,,Rcode:// KeyboardExerciser new openInHand;,,Rcode:// PreferenceBrowser open searchPattern: EventSensor name;,,LGridLayout Definition;,,LPasteUpMorph Definition;,,Rcode:// self systemNavigation browseAllImplementorsOf: #morphicLayerNumber;,,Rcode:// (((('I am a morph that will always be in front\of other windows but behind menus' withCRs asTextMorph readOnly: true) openInWindow color: Color white)paneColor: Color white)morphicLayerNumber: Morph dialogLayer) openInHand;,,LDropFilesEvent Definition;,,Rcode:// 'drop a file or folder here' edit;,,Rcode:// {'drop a file or folder on slot 1'} inspect;,,Rcode:// ((TransferMorph withPassenger: PasteUpMorph >> #dropSourceCode:event:) dragTransferType: #sourceCode) openInHand;,,Rcode:// | bar | bar := (self currentWorld mainDockingBars ifEmpty: [^ self]) first. bar selectItem: ((bar submorphs select: #isMenuItemMorph) at: 9) event: self currentEvent;,,Rcode:// | bar menu | bar := (self currentWorld mainDockingBars ifEmpty: [^ self]) first. bar selectItem: ((bar submorphs select: #isMenuItemMorph) at: 7) event: self currentEvent. menu := self currentWorld findA: MenuMorph. menu selectItem: menu items second event: self currentEvent.;,,Rcode:// | bar menu | bar := (self currentWorld mainDockingBars ifEmpty: [^ self]) first. bar selectItem: ((bar submorphs select: #isMenuItemMorph) at: 3) event: self currentEvent. menu := self currentWorld findA: MenuMorph. menu matchString: 'Squeak Inbox Talk' event: self currentEvent;,,Rcode:// | bar menu | bar := (self currentWorld mainDockingBars ifEmpty: [^ self]) first. bar selectItem: ((bar submorphs select: #isMenuItemMorph) at: 8) event: self currentEvent. menu := self currentWorld findA: MenuMorph. menu matchString: 'feedback' event: self currentEvent;,,Rcode:// (self currentWorld dockingBars ifEmpty: [^ self]) first searchBarMorph ifNotNil: [:m | m model activate: self currentEvent in: m];,,Rcode:// PreferenceBrowser open searchPattern: #reuseWindows;,,Rcode:// self inform: 'You can now select text in dialog windows and even click links!! :D' asTextFromHtml;,,Rcode:// self inform: Object comment;,,Rcode:// "sigh..." [0.3 seconds wait. Project current addDeferredUIMessage: [| box | box := (self currentWorld findA: SystemWindow) instVarNamed: 'menuBox'. self currentHand position: box center. box doButtonAction]] fork;,,Rcode:// ((Project current world findA: SystemWindow) findDeeplyA: StringMorph) launchMiniEditor: self currentEvent;,,Rcode:// Project uiManager edit: '"Print it, then click on the result!!" Project current world' label: 'Interactive print-it example' shouldStyle: true;,,Rcode:// PreferenceBrowser open searchPattern: #interactivePrintIt;,,Rcode:// ToolSet browseClass: TextMorph category: 'accessing';,,Rcode:// self systemNavigation browseAllImplementorsOfList: #(plainTextOnly plainTextOnly:);,,Rcode:// self systemNavigation browseAllImplementorsOfList: #(averageLineLength averageLineLength:);,,Rcode:// (Preferences pragmaPreferenceFor: PluggableTextMorph getter: #softLineWrapAtVisualWrapBorder) open;,,Rcode:// PreferenceBrowser open searchPattern: 'useCompact';,,Rcode:// (Preferences pragmaPreferenceFor: TextEditor getter: #encloseSelection) openInCategory: 'editing';,,Rcode:// (Preferences pragmaPreferenceFor: LegacyShortcutsFilter getter: #legacyShortcutsEnabled) openInCategory: 'editing';,,Rcode:// HelpBrowser openOn: (SqueakTutorialsCommandKey asHelpTopic subtopicAt: #commandKeyMappings);,,Rcode:// self systemNavigation browseAllCallsOn: #defaultFocusMorph:;,,Rcode:// WebCamMorph new openInHand;,,Rcode:// CameraInterface class;,,Rcode:// (WindowEvent>>#type) browse;,,Rcode:// self systemNavigation browseAllCallsOn: #windowChangedScreen;,,Rcode:// self systemNavigation browseAllCallsOn: #windowDeactivated;,,Rcode:// |m n| m := RectangleMorph new. n := EllipseMorph new. m addMorph: n. n center: m bottomRight. m openInHand;,,Rcode:// (Preferences preferenceAt: #haloEnclosesFullBounds) open;,,LMorph Definition;,,Rcode:// self systemNavigation browseAllImplementorsOf: #ownerChanged;,,Rcode:// ToolSet browseClass: Morph category: 'display scale';,,Rcode:// (Morph >> #setProperty:toValue:) browse;,,LMorph pointAtFraction:;,,Rcode:// self systemNavigation browseAllCallsOn: #evaluateExpression:requestor:;,,Rcode:// self systemNavigation browseAllCallsOn: #debugExpression:requestor:;,,LObject currentWorld;,,LObject currentHand;,,LObject currentEvent;,,Rcode:// PreferenceBrowser open selectedCategory: 'Accessibility';,,dFrameRateMorph newStandAlone openInHand;;,,Rcode:// (Preferences pragmaPreferenceFor: WorldState getter: #disableDeferredUpdates) open;,,Rcode:// SketchMorph extraExampleCook openInHand;,,Rcode:// (self currentWorld findA: SystemWindow) addHalo;,,Rcode:// Project current world activateObjectsTool;,,Rcode:// Smalltalk handleUserInterrupt;,,Rcode:// FileStream readOnlyFileNamed: ((Project uiManager chooseFileMatchingSuffixes: #('gif')) ifNil: [^ nil]) do: [:stream | AnimatedImageMorph openGIFInWindow: stream];,,LCameraInterface Comment;,,i,,i,,Rcode:// Chess960Morph new openInWorld;,,Rcode:// Mines new openInHand;,,Rcode:// SameGame new openInHand;,,Rcode:// MonthMorph new openInHand;,,Rcode:// CalendarMorph new openInHand;,,Rcode:// MIDIPianoKeyboardMorph newStandAlone openInHand;,,i,,i,,Rcode:// PreferenceBrowser open searchPattern: 'TranscriptStream forceUpdate';,,bcgray;,,i,,i,,i,,i,,Rcode:// EUCTextConverter browseHierarchy. nil;,,Rcode:// ToolSet browseClassCommentOf: ShiftJISTextConverter;,,Rcode:// ToolSet browseClassCommentOf: KOI8BTextConverter;,,LEUCCNTextConverter Definition;,,LMultiByteFileStream nextChunk;,,Rcode:// Unicode class;,,Rcode:// (Unicode class>>#generalCategoryTagOf:) browse;,,LMultiByteFileStream upToEnd;,,i,,i,,Rcode:// HelpBrowser open;,,Rcode:// #(bookBlurb bookBlurbKey) do: [:sel | self systemNavigation browseAllImplementorsOf: sel];,,Rcode:// (AbstractHelpTopic>>#priority) browse;,,Rcode:// (Process forBlock: [HelpBrowser openOn: Morph]) debug;,,Rcode:// HelpBrowser openOn: (SqueakTutorialsCommandKey asHelpTopic subtopicAt: #commandKeyMappings);,,bcgray;,,i,,i,,b,Rcode:// (2 @ 3) inspect;b,b,,Rcode:// self systemNavigation methodHierarchyBrowserForClass: Inspector selector: #streamBaseFieldsOn:;,,LInspector Hierarchy;,,Rcode:// | bag |bag := Bag new. bag add: #apple withOccurrences: 3. bag add: #banana withOccurrences: 1. bag add: #cherry withOccurrences: 5. bag add: #peach withOccurrences: 2. bag inspect;,,Rcode:// CharacterSet separators inspect;,,Rcode:// Form extraWizard inspect;,,Rcode:// (Project current world findA: SystemWindow) inspect;,,Rcode:// | x | x := 'Hello {1}!!'. [:y | x format: {y}] inspect;,,LProtoObject Hierarchy;,,Rcode:// | obj | obj := (Project current world findA: SystemWindow). ToolSet basicInspect: (ObjectViewer on: obj evaluate: [Transcript showln: 'resized'] wheneverChangeIn: [obj extent]).;,,Rcode:// {42. Float pi. 10 ** 100} explore;,,Rcode:// DependencyBrowser open;,,Rcode:// ToolSet browse: DependencyBrowser class selector: #openInvertedOn:;,,Rcode:// Browser open;,,Rcode:// | bar | bar := (self currentWorld mainDockingBars ifEmpty: [^ self]) first. bar selectItem: ((bar submorphs select: #isMenuItemMorph) at: 6) event: self currentEvent. bar selectedItem subMenu setProperty: #matchString toValue: 'recover method versions'. bar selectedItem subMenu displayFiltered: self currentEvent;,,Rcode:// Workspace open;,,Rcode:// (Preferences pragmaPreferenceFor: Workspace getter: #fileOutOnAccept) openInCategory: 'tools';,,Rcode:// PreferenceBrowser open searchPattern: 'embedTranscript';,,Rcode:// PreferenceBrowser open searchPattern: 'Workspace declareVariablesAutomatically';,,Rcode:// ToolBuilder open: (CodeHolder new setClass: CodeHolder selector: #setClass:selector:);,,Rcode:// ChangeSetBrowser open;,,Rcode:// ProcessBrowser open;,,Rcode:// (MessageTrace openMessageList: #('MessageSet class openMessageList:name:') name: 'Message trace example' autoSelect: nil) model addParentMethodsSending: #openMessageList:name:autoSelect:;,,Rcode:// (AbstractFont>>#browseAllGlyphs) browse;,,Rcode:// ToolSet browseClass: Unicode class category: '*Tools-Browsing';,,Rcode:// PreferenceBrowser open;,,Rcode:// PreferenceWizardMorph open;,,Rcode:// ((World findA: SystemWindow) allMorphs detect: [:m | m isTextView and: [m text asString includesSubstring: 'copy as html']]) yellowButtonActivity. (World findA: MenuMorph) matchString: 'html' event: self currentEvent;,,Rcode:// ((World findA: SystemWindow) allMorphs detect: [:m | m isTextView and: [m text asString includesSubstring: 'TextLinks']]) textMorph editor changeEmphasis: (KeyboardEvent new setType: #keystroke buttons: 0 "no modifiers" position: self currentHand position keyValue: $5 asciiValue hand: self currentHand stamp: Time millisecondClockValue);,,LTextLink Comment;,,LTextLink Definition;,,LTextLink Hierarchy;,,Rcode:// (Model>>#buildMenu:withBuilders:shifted:) browse;,,Rcode:// Browser open;,,Rcode:// ChangeList browseRecent: 42;,,Rcode:// ChangeSorter open;,,Rcode:// self halt;,,Rcode:// | bar item halo debugMenu | bar := (self currentWorld mainDockingBars ifEmpty: [^ self]) first. item := (bar submorphs select: #isMenuItemMorph) eighth. bar selectItem: item event: self currentEvent. (item := item subMenu items last) isSelected: true. halo := item addHalo. halo doDebug: self currentEvent with: nil. (debugMenu := self currentWorld findA: MenuMorph) setProperty: #matchString toValue: 'action'. debugMenu displayFiltered: self currentEvent. item owner openInWorld. halo openInWorld. debugMenu comeToFront.;,,Rcode:// FileList open;,,Rcode:// Smalltalk inspect;,,Rcode:// (Unicode classPool at: #DecimalProperty) explore;,,Rcode:// self systemNavigation browseAllCallsOn: #yourself;,,Rcode:// ProcessBrowser open;,,Rcode:// ProtocolBrowser openFullProtocolForClass: Array;,,Rcode:// Lexicon new openOnClass: Array showingSelector: #@;,,Rcode:// ToolSet browseVersionsOf: Object selector: #browse;,,Rcode:// SqueakToolsDebuggerHelp edit: #usingTheDebugger. nil;,,i,,i,,Rcode:// ToolSet browseMessageNames: 'chooseFrom*';,,Rcode:// d := OrderedDictionary new. d at: 'Debug' put: [^self halt]. d at: 'Retry' put: #retry. d at: 'Cancel' put: nil. [(Project uiManager chooseOptionFromLabeledValues: d) value isNil] whileFalse;,,Rcode:// ToolSet browseMessageNames: 'chooseFrom*';,,Rcode:// ToolSet browseClass: Model category: 'toolbuilder';,,Rcode:// PluggableListSpec browse;,,Rcode:// self systemNavigation browseAllImplementorsOf: #dropAccept localToPackage: PluggableListSpec packageInfo;,,Rcode:// self systemNavigation browseAllImplementorsOf: #dragType localToPackage: PluggableListSpec packageInfo;,,Rcode:// PluggableTextSpec>>#textStyle:;,,Rcode:// PluggableTextSpec>>#font:;,,Rcode:// ToolSet browseClass: ToolBuilder category: 'layout hints';,,LProvideAnswerNotification Definition;,,Rcode:// self systemNavigation browseMessageList: (((UIManager methodDict as: Dictionary) flag: #workaround) select: [:ea | ea selector beginsWith: 'chooseFrom'] thenCollect: #methodReference) name: 'UIManager >> selectFrom*';,,LUIManager Hierarchy;,,Rcode:// FileChooserDialog openOn: FileDirectory default;,,Rcode:// Project uiManager chooseFrom: ((1 to: 20) collect: #asWords);,,Rcode:// ProgressInitiationException browse;,,Rcode:// ToolSet browseClass: PluggableMenuSpec category: 'construction';,,Rcode:// ToolSet browseClass: MenuMorph category: 'construction';,,i,,i,,Rcode:// Warning;,,i,,Rcode:// ToolSet browseClass: TestCase category: 'asserting';,,Rcode:// TestCase >> #shouldRaiseError:;,,Rcode:// TestCase>> #shouldFix:;,,Rcode:// TestResult class >> #error;,,Rcode:// Project uiManager edit: '(SUnitTest selector: #testAssert) debugAsFailure' label: 'Debug a test' shouldStyle: true;,,Rcode:// TestCase>>#setUp;,,Rcode:// TestCase>>#tearDown;,,Rcode:// ToolSet browseClass: TestCase class category: 'testing';,,LTestCase class hasErrors;,,LTestCase class hasFailures;,,LTestCase class hasDefects;,,Rcode:// TestCase class>>#generateLastStoredRunMethod;,,Rcode:// WidgetStub;,,LClassTestCase Definition;,,Rcode:// ToolSet browseHierarchy: ClassTestCase selector: #targetClass;,,Rcode:// ToolSet browseHierarchy: ClassTestCase selector: #classToBeTested;,,Rcode:// ToolSet browseClassCommentOf: TestResource;,,i,,i,,i,,i,,Rcode:// PreferenceBrowser openForServices;,,i,,i,,Rcode:// self systemNavigation browseAllCallsOn: #pragmaParser;,,Rcode:// PreferenceBrowser open searchPattern: #syntaxHighlightingAsYouType ;,,i,,i,,Rcode:// | reporter |reporter := SystemReporter new. reporter selectNoCategories categoryAt: (reporter categoryList indexOf: 'Image Packages') put: true. ToolBuilder open: reporter;,,Rcode:// | reporter |reporter := SystemReporter new. reporter selectNoCategories categoryAt: (reporter categoryList indexOf: 'Image Locale') put: true. ToolBuilder open: reporter;,,Rcode:// | t1 | t1 := SystemReporter new. t1 selectNoCategories categoryAt: (t1 categoryList indexOf: 'Image Fonts') put: true. ^ ToolBuilder open: t1;,,Rcode://| reporter | reporter := SystemReporter new. reporter selectNoCategories categoryAt: (reporter categoryList indexOf: 'VM Parameters') put: true. ToolBuilder open: reporter;,,Rcode://| reporter | reporter := SystemReporter new. reporter selectNoCategories categoryAt: (reporter categoryList indexOf: 'Image') put: true. ToolBuilder open: reporter;,,bcgray;,,i,,i,,i,,i,,LMCConfigurationExtended Comment;,,Rcode:// ToolSet browse: MCHttpRepository class selector: #urlRewriteRules;,,Rhttps://source.squeak.org;,,LTrait Comment;,,LMCMcmUpdater dependentPackages;,,Rcode:// (self confirm: 'Install image updates now?') ifTrue: [MCMcmUpdater updateFromServer];,,Rcode:// (MCRepository trunk versionNamed: 'Monticello-jr.718.mcz') open;,,i,,i,,bcgray;,,i,,i,,Rcode://TestRunner open;,,Rcode:// ((TextURL new url: SystemVersion current ciStatusPageUrl) actOnClickFor: nil);,,i,,i,,Rcode:// MCRepository inbox morphicOpen;,,Rcode:// MCRepository treated morphicOpen;,,Rcode:// ReleaseBuilder class>>#fileOutChangesBetweenReleases;,,b,,LSequenceableCollection withIndexDo:;,,LSequenceableCollection withIndexCollect:;,,LDropFilesEvent Definition;,,LMorph handleDropFiles:;,,LMorph wantsDropFiles:;,,LMorph acceptDroppingMorph:event:;,,LMorph wantsDroppedMorph:event:;,,LTransferMorph dragTransferType;,,Rcode:// self systemNavigation browseAllCallsOn: #filesAndDirectories;,,b,,LRxParserTest testOptionalLookbehind2;,,b,,b,,b,,LObject becomeForward:;,,LArray elementsForwardIdentityTo:;,,b,,Rcode:// Warning;,,Rcode:// ToolSet browseMessageNames: 'chooseFrom*';,,Rcode:// ToolSet browseMessageNames: 'chooseFrom*';,,LProcess terminate;,,LProcess suspend;,,LProcess resume;,,LProcess suspendAndUnblock;,,Rcode://SyntaxErrorNotification;,,Rcode://#retryWithNewSource:;,,Rcode://#asMutator;,,Rcode://#asSimpleSetter;,,Rcode://#allowBlockArgumentAssignment;,,i,,Rcode:// (Preferences pragmaPreferenceFor: LegacyShortcutsFilter getter: #legacyShortcutsEnabled) openInCategory: 'editing';,,Rcode:// HelpBrowser openOn: (SqueakTutorialsCommandKey asHelpTopic subtopicAt: #commandKeyMappings);,,cblue;,bcblue;,cblue;,bcblue;,cblue;,bcblue;,cblue;,bcblue;,cblue;,bcblue;,cblue;,bcblue;,cblue;,Rcode:// | t1 | t1 := SystemReporter new. t1 selectNoCategories categoryAt: (t1 categoryList indexOf: 'Contributors') put: true. ^ ToolBuilder open: t1;cblue;b,cblue;,bcblue;,cblue;,bcblue;,cblue;,bcblue;,cblue;,bcblue;,cblue;,bcblue;,!