diff --git a/release-notes/6.0 b/release-notes/6.0
index 22fd3ca..318137f 100644
--- a/release-notes/6.0
+++ b/release-notes/6.0
@@ -1,3 +1,3 @@
-*** Squeak 6.0 Release Notes ***
TBD (summary)
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.1453)
- 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, stability of which has been improved in the course of this switch (fixed bugs in FullBlockClosure >> #= and InstructionStream >> #scanForInstructionSequence:).
- 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 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. 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 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 synthetized 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 Collections-ul.1002)
- 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.
- Implements removal on RunArray.
- Improves stability of SharedQueues and lets them understand #peekLast.
- Adds convenience protocol for enumerating SparseLargeTables.
- Updates the list of character constants and separators.
- 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.
- 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-ul.55)
- Automatically updates the image time zone every 30 minutes.
- Honor nanoseconds in Time >> #addSeconds: and DateAndTime >> #printString:.
- Extends DateAndTime class >> #readFrom: to accept offset strings without a colon according to the RFC 822 specification.
- Adds precise #busyWait on Delay 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).
Compiler (up to Compiler-eem.472)
- 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 to cancel 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.
- Overall improvements to documentation.
Environments (up to Environments-ct.83)
- 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-eem.449)
- 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.
- Adds public 'text composition' protocol on TextStyle.
- 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.
- Improves display of multiple TextAnchors. Adds convenience selector Form >> #asTextAnchor.
- Adds 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.
- Connects 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.91)
- 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-ct.88)
- Fixes wave sound streaming on non-filestream objects.
- Adds convenience selectors to MIDIScore and TempoEvent.
- Improves performance of synchronous sound playing.
- Miscellaneous stability improvements with regard to the sound player process, AIFF importing, FFT, MixedSounds, and the SoundRecorder protocol.
~~~ Network ~~~
Network (up to Network-eem.249)
- Improves support for IPv6 networking.
- Adds basic XML support for HTTP server directories.
- Fixes parsing of mime documents.
- Improves error handling of connection errors.
SqueakSSL (up to SqueakSSL-Core-mt.34)
- No significant changes.
WebClient (up to WebClient-Core-ul.128)
- Corrects handling of HTTP status codes (according to RFC 7230).
- 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
- 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-dtl.61)
- Adds a new preference to cache a compressed copy of the sources file in the image to avoid I/O accesses to the file system.
- Speeds up CompressedSourceStream >> #contentsOfEntireFile significantly and improves progress reporting.
- Improves robustness and internal test coverage.
Regex (up to Regex-Core-tobe.60)
- 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 with regard to parsing invalid expressions.
System (up to System-ct.1333)
- 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.
- Extends SpaceTally with a parameter for limiting traversion 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.
- 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 capabality 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.
- Turns the demo/high-DPI mode into a flexible and refurbished scale factor and adds a low-ppi mode. Improves switching between UserInterfaceThemes, adds a #themePriority hook for updating targets, and makes it possible to set UI theme properties from a target. Tweaks default font sizes and colors of some themes.
- 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.
- Cleans up and stabilizes locale identification and switching.
- 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 resposnibility 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.1961)
- 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 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 #numCharactersPerLine. 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 multi 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 protuding 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). Revises the properties protocol to follow the return value semantics from collections. Provides #pointAtFraction: for convenience.
- To editors, adds support for new optional model hook #evaluateExpression: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.471)
- 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 ST80-ct.264)
- 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.
- 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.275)
- 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 further encoding issues; 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 and refactorings.
Help (up to Help-Squeak-Project-ct.89)
- 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 in the welcome page.
- Clean-ups and stability improvements regarding help-topic authoring and searching in the help browser.
~~~ Programming Tools ~~~
Tools (up to Tools-ul.1145)
- 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.
- 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 to suspend 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 browing 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-Kernel-ct.156)
- 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 SUnitGUI-mt.87)
- Treats warnings in test cases like errors.
- Refactors and completes 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.
- Avoids checking in stored test results.
- Updates widget stubs for tests.
- Minor clean-ups and stability improvements to the test runner.
- Improves internal test coverage and documentation.
Nebraska (up to Nebraska-mt.59)
- No significant changes.
Services (up to Services-Base-mt.71)
- Removes the "create new service" item from the method-list menu.
- Minor stability improvements to the services browser.
Shout (Syntax Highlighting) (up to ShoutCore-mt.92)
- 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 VersionNumberTests-ct.5)
- 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-mt.176)
- 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.
- Miscellaneous speed-ups and clean-ups.
SqueakMap (up to SMLoader-mt.94)
- Minor clean-ups and deprecations.
~~~ Deployment & Misc. ~~~
Tests (up to Tests-ct.481)
- Adds overall test coverage. Improves robustness and eliminates side-effects of several tests.
- There are now over 5000 tests in this release which run in less than 4 minutes on our CI.
ReleaseBuilder (up to ReleaseBuilder-ct.231)
- Improves the reproducibility of the image state by resetting all pragma preferences to the default values specified in their declarations.
- 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
- Process termination is currently buggy and will silently drop the process if some unwind contexts signal an unhandled error. See: [squeak-dev] Solving multiple termination bugs - summary & proposal.
- When you abandon a debugger from within an unwind context, execution of the unwind context will be continued. See: [squeak-dev] The semantics of halfway-executed unwind contexts during process termination.
- 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
- 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.
- 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.
- 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.
("\(^.^)/") ("\(^.^)/") ("\(^.^)/")
!!!!!! THANK YOU ALL FOR YOUR CONTRIBUTIONS !!!!!!
("\(^.^)/") ("\(^.^)/")
!
]style[(32 98 18 2 12 6 19 18 4 54 3 61 3 21 2 14 14 1 16 24 7 1 63 50 41 14 21 17 83 22 5 49 27 17 106 21 25 12 29 8 28 30 5 20 14 24 77 4 1 4 37 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 91 17 18 11 50 8 102 22 51 39 5 41 26 23 66 13 6 9 27 10 5 14 10 4 1 15 44 11 66 19 81 7 10 10 25 13 33 19 59 11 100 13 5 17 9 16 73 22 118 11 303 19 19 2 66 12 12 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 15 7 76 9 34 29 24 19 5 10 34 4 91 4 18 14 19 10 26 11 14 16 30 16 163 13 5 18 28 9 2 11 21 13 3 18 21 1 86 20 5 28 12 31 26 15 18 21 17 9 49 5 13 31 5 38 100 31 20 17 63 8 12 9 12 16 16 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 44 20 18 1 35 18 61 35 3 14 14 1 41 19 19 1 74 24 2 16 16 1 38 5 145 27 38 18 38 12 31 14 15 10 2 7 2 8 23 14 106 11 28 21 9 24 67 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 82 4 12 3 2 11 10 13 13 15 2 15 15 1 54 3 13 23 21 14 51 17 20 1 28 17 21 1 56 8 45 28 9 18 118 3 29 31 2 13 12 1 32 26 79 37 76 30 3 19 18 1 14 10 12 15 88 47 99 13 18 1 55 44 98 8 98 14 14 1 80 25 22 27 53 10 88 15 107 15 4 7 14 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 105 12 53 19 9 14 53 3 120 14 19 38 7 35 30 10 21 20 93 6 484 8 1 7 109 27 2 28 2 21 2 20 112 11 53 22 2 15 15 1 3 82 105 13 5 12 232 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 80 16 12 10 11 26 31 11 5 22 9 21 105 12 34 11 74 10 14 13 63 14 5 21 9 10 134 21 75 7 164 10 85 4 220 7 61 11 18 15 25 13 1 20 5 18 116 19 8 38 93 5 42 13 71 19 65 17 73 30 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 11 1 384 47 5 35 2 15 13 1 28 20 19 1 72 14 25 20 5 16 42 18 96 33 12 7 52 8 29 31 41 12 25 1 16 12 76 6 34 9 57 27 39 32 160 25 2 13 13 1 25 9 37 16 32 15 20 4 2 14 2 5 2 6 6 6 158 12 9 7 46 7 34 18 110 29 35 8 224 4 99 10 9 10 49 10 41 11 53 12 47 18 11 15 144 14 82 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 25 1 32 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 14 4 7 8 27 3 24 28 88 18 25 11 5 26 12 17 34 6 1 9 83 19 12 12 115 13 3 16 14 1 28 16 19 1 106 16 3 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 23 2 168 18 31 1 8 23 66 17 61 17 51 6 91 34 233 13 35 18 189 17 14 1 39 26 2 13 12 1 118 10 57 2 3 22 21 1 153 9 5 17 117 20 115 18 89 13 5 18 120 14 119 6 1 5 18 27 5 25 14 17 5 20 3 12 3 19 111 67 13 7 99 89 69 85 84 19 6 23 26 20 90 10 151 15 34 29 30 8 102 21 343 38 105 15 4 27 38 9 61 1 2 1 17 1 2 1 17 1 2 1 76 1 2 1 17 1 2 1 8 2)b,,b,,b,,b,,c170170170,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 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;,,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;,,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,,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,,LRawBitsArray Hierarchy;,,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;,,Rcode:// ToolSet browseClass: RunArray category: 'removing';,,Rcode:// self systemNavigation browseAllImplementorsOf: #peekLast;,,Rcode:// ToolSet browseClass: SparseLargeTable category: 'enumerating';,,Rcode:// ToolSet browse: Character class selector: #constantNames;,,Rcode:// ToolSet browse: Character class selector: #separators;,,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;,,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 class readFrom:;,,Rcode:// '''1970-01-01T00:00:00.000+0000'' asDateAndTime' edit;,,Rhttps://datatracker.ietf.org/doc/html/rfc822#section-5.1;,,LDelay 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,,Rcode:// AbstractFont browseHierarchy;,,Rcode:// ToolSet browseClass: TextStyle category: 'text composition';,,Rcode:// ToolSet browseMessageNames: 'defaultFallback';,,LAbstractFont Hierarchy;,,LAbstractFont subfamilyName;,,LAbstractFont asRegular;,,LAbstractFont larger;,,LAbstractFont smaller;,,LAbstractFont hasFixedWidth;,,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 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;,,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,,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,,Rcode:// (Lexicon new openOnClass: DoItFirst showingSelector: nil) chooseCategory: 'actions';,,++,,LSpaceTally Comment;,,Rcode:// ChangeList browseRecentLog;,,Rcode:// ToolSet browseClass: ChangeSet category: 'class changes';,,Rcode:// ToolSet browseClass: ChangeSet category: 'method changes';,,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:// MenuMorph new in: [:menu |
TheWorldMainDockingBar instance scaleFactorsOn: menu.
menu popUpInWorld];,,LUserInterfaceTheme Hierarchy;,,LObject class themePriority;,,Rcode:// ToolSet browse: UserInterfaceThemeRequest selector: #doesNotUnderstand:;,,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:// (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;,,Rcode:// FontImporterTool open;,,Rcode:// (Project current world findA: SystemWindow) allMorphs detect: [:m | m isTextView and: [m text asString includesSubstring: 'font chooser']] ifFound: [:m | m textMorph chooseFont];,,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.
menu items second subMenu delete;,,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: #(numCharactersPerLine numCharactersPerLine:);,,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:// (Morph >> #setProperty:toValue:) browse;,,LMorph pointAtFraction:;,,Rcode:// self systemNavigation browseAllCallsOn: #evaluateExpression: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,,Rcode:// (2 @ 3) inspect;,,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 |
+*** Squeak 6.0 Release Notes ***
TBD (prosa)
* highlight key changes (candidates: objectland, inspectors, fonts, bytecode set)
* after feature freeze, update packages again
* spell-checking (Grammarly)
* Is it worth the effort to refactor TextURLs below to use Preference >> #open in all places?
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.1453)
- 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, stability of which has been improved in the course of this switch (fixed bugs in FullBlockClosure >> #= and InstructionStream >> #scanForInstructionSequence:).
- 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 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. 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 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 synthetized 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 Collections-ul.1002)
- 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.
- Implements removal on RunArray.
- Improves stability of SharedQueues and lets them understand #peekLast.
- Adds convenience protocol for enumerating SparseLargeTables.
- Updates the list of character constants and separators.
- 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.
- 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-ul.55)
- Automatically updates the image time zone every 30 minutes.
- Honor nanoseconds in Time >> #addSeconds: and DateAndTime >> #printString:.
- Extends DateAndTime class >> #readFrom: to accept offset strings without a colon according to the RFC 822 specification.
- Adds precise #busyWait on Delay 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).
Compiler (up to Compiler-eem.472)
- 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 to cancel 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.
- Overall improvements to documentation.
Environments (up to Environments-ct.83)
- 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-eem.449)
- 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.
- Adds public 'text composition' protocol on TextStyle.
- 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.
- Improves display of multiple TextAnchors. Adds convenience selector Form >> #asTextAnchor.
- Adds 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.
- Connects 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.91)
- 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-ct.88)
- Fixes wave sound streaming on non-filestream objects.
- Adds convenience selectors to MIDIScore and TempoEvent.
- Improves performance of synchronous sound playing.
- Miscellaneous stability improvements with regard to the sound player process, AIFF importing, FFT, MixedSounds, and the SoundRecorder protocol.
~~~ Network ~~~
Network (up to Network-eem.249)
- Improves support for IPv6 networking.
- Adds basic XML support for HTTP server directories.
- Fixes parsing of mime documents.
- Improves error handling of connection errors.
SqueakSSL (up to SqueakSSL-Core-mt.34)
- No significant changes.
WebClient (up to WebClient-Core-ul.128)
- Corrects handling of HTTP status codes (according to RFC 7230).
- 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
- 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-dtl.61)
- Adds a new preference to cache a compressed copy of the sources file in the image to avoid I/O accesses to the file system.
- Speeds up CompressedSourceStream >> #contentsOfEntireFile significantly and improves progress reporting.
- Improves robustness and internal test coverage.
Regex (up to Regex-Core-tobe.60)
- 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 with regard to parsing invalid expressions.
System (up to System-ct.1333)
- 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.
- Extends SpaceTally with a parameter for limiting traversion 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.
- 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 capabality 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.
- Turns the demo/high-DPI mode into a flexible and refurbished scale factor and adds a low-ppi mode. Improves switching between UserInterfaceThemes, adds a #themePriority hook for updating targets, and makes it possible to set UI theme properties from a target. Tweaks default font sizes and colors of some themes.
- 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.
- Cleans up and stabilizes locale identification and switching.
- 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 resposnibility 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.1961)
- 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 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 #numCharactersPerLine. 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 multi 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 protuding 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). Revises the properties protocol to follow the return value semantics from collections. Provides #pointAtFraction: for convenience.
- To editors, adds support for new optional model hook #evaluateExpression: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.471)
- 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 ST80-ct.264)
- 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.
- 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.275)
- 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 further encoding issues; 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 and refactorings.
Help (up to Help-Squeak-Project-ct.89)
- 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 in the welcome page.
- Clean-ups and stability improvements regarding help-topic authoring and searching in the help browser.
~~~ Programming Tools ~~~
Tools (up to Tools-ul.1145)
- 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.
- 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 to suspend 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 browing 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-Kernel-ct.156)
- 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 SUnitGUI-mt.87)
- Treats warnings in test cases like errors.
- Refactors and completes 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.
- Avoids checking in stored test results.
- Updates widget stubs for tests.
- Minor clean-ups and stability improvements to the test runner.
- Improves internal test coverage and documentation.
Nebraska (up to Nebraska-mt.59)
- No significant changes.
Services (up to Services-Base-mt.71)
- Removes the "create new service" item from the method-list menu.
- Minor stability improvements to the services browser.
Shout (Syntax Highlighting) (up to ShoutCore-mt.92)
- 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 VersionNumberTests-ct.5)
- 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-mt.176)
- 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.
- Miscellaneous speed-ups and clean-ups.
SqueakMap (up to SMLoader-mt.94)
- Minor clean-ups and deprecations.
~~~ Deployment & Misc. ~~~
Tests (up to Tests-ct.481)
- Adds overall test coverage. Improves robustness and eliminates side-effects of several tests.
- There are now over 5000 tests in this release which run in less than 4 minutes on our CI.
ReleaseBuilder (up to ReleaseBuilder-ct.231)
- Improves the reproducibility of the image state by resetting all pragma preferences to the default values specified in their declarations.
- 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
- Process termination is currently buggy and will silently drop the process if some unwind contexts signal an unhandled error. See: [squeak-dev] Solving multiple termination bugs - summary & proposal.
- 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
- 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.
- 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.
- 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.
("\(^.^)/") ("\(^.^)/") ("\(^.^)/")
!!!!!! THANK YOU ALL FOR YOUR CONTRIBUTIONS !!!!!!
("\(^.^)/") ("\(^.^)/")
!
]style[(32 2 262 83 18 2 12 6 19 18 4 54 3 61 3 21 2 14 14 1 16 24 7 1 63 50 41 14 21 17 83 22 5 49 27 17 106 21 25 12 29 8 28 30 5 20 14 24 77 4 1 4 37 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 91 17 18 11 50 8 102 22 51 39 5 41 26 23 66 13 6 9 27 10 5 14 10 4 1 15 44 11 66 19 81 7 10 10 25 13 33 19 59 11 100 13 5 17 9 16 73 22 118 11 303 19 19 2 66 12 12 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 15 7 76 9 34 29 24 19 5 10 34 4 91 4 18 14 19 10 26 11 14 16 30 16 163 13 5 18 28 9 2 11 21 13 3 18 21 1 86 20 5 28 12 31 26 15 18 21 17 9 49 5 13 31 5 38 100 31 20 17 63 8 12 9 12 16 16 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 44 20 18 1 35 18 61 35 3 14 14 1 41 19 19 1 74 24 2 16 16 1 38 5 145 27 38 18 38 12 31 14 15 10 2 7 2 8 23 14 106 11 28 21 9 24 67 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 82 4 12 3 2 11 10 13 13 15 2 15 15 1 54 3 13 23 21 14 51 17 20 1 28 17 21 1 56 8 45 28 9 18 118 3 29 31 2 13 12 1 32 26 79 37 76 30 3 19 18 1 14 10 12 15 88 47 99 13 18 1 55 44 98 8 98 14 14 1 80 25 22 27 53 10 88 15 107 15 4 7 14 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 105 12 53 19 9 14 53 3 120 14 19 38 7 35 30 10 21 20 93 6 484 8 1 7 109 27 2 28 2 21 2 20 112 11 53 22 2 15 15 1 3 82 105 13 5 12 232 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 80 16 12 10 11 26 31 11 5 22 9 21 105 12 34 11 74 10 14 13 63 14 5 21 9 10 134 21 75 7 164 10 85 4 220 7 61 11 18 15 25 13 1 20 5 18 116 19 8 38 93 5 42 13 71 19 65 17 73 30 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 11 1 384 47 5 35 2 15 13 1 28 20 19 1 72 14 25 20 5 16 42 18 96 33 12 7 52 8 29 31 41 12 25 1 16 12 76 6 34 9 57 27 39 32 160 25 2 13 13 1 25 9 37 16 32 15 20 4 2 14 2 5 2 6 6 6 158 12 9 7 46 7 34 18 110 29 35 8 224 4 99 10 9 10 49 10 41 11 53 12 47 18 11 15 144 14 82 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 25 1 32 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 14 4 7 8 27 3 24 28 88 18 25 11 5 26 12 17 34 6 1 9 83 19 12 12 115 13 3 16 14 1 28 16 19 1 106 16 3 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 23 2 168 18 31 1 8 23 66 17 61 17 51 6 91 34 233 13 35 18 189 17 14 1 39 26 2 13 12 1 118 10 57 2 3 22 21 1 153 9 5 17 117 20 115 18 89 13 5 18 120 14 119 6 1 5 18 27 5 25 14 17 5 20 3 12 3 19 111 67 69 85 84 19 6 23 26 20 90 10 151 15 34 29 30 8 102 21 343 21 4 13 105 15 4 27 38 9 84 7 93 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,,cred;,,b,,b,,b,,c170170170,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 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;,,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;,,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,,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,,LRawBitsArray Hierarchy;,,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;,,Rcode:// ToolSet browseClass: RunArray category: 'removing';,,Rcode:// self systemNavigation browseAllImplementorsOf: #peekLast;,,Rcode:// ToolSet browseClass: SparseLargeTable category: 'enumerating';,,Rcode:// ToolSet browse: Character class selector: #constantNames;,,Rcode:// ToolSet browse: Character class selector: #separators;,,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;,,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 class readFrom:;,,Rcode:// '''1970-01-01T00:00:00.000+0000'' asDateAndTime' edit;,,Rhttps://datatracker.ietf.org/doc/html/rfc822#section-5.1;,,LDelay 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,,Rcode:// AbstractFont browseHierarchy;,,Rcode:// ToolSet browseClass: TextStyle category: 'text composition';,,Rcode:// ToolSet browseMessageNames: 'defaultFallback';,,LAbstractFont Hierarchy;,,LAbstractFont subfamilyName;,,LAbstractFont asRegular;,,LAbstractFont larger;,,LAbstractFont smaller;,,LAbstractFont hasFixedWidth;,,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 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;,,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,,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,,Rcode:// (Lexicon new openOnClass: DoItFirst showingSelector: nil) chooseCategory: 'actions';,,++,,LSpaceTally Comment;,,Rcode:// ChangeList browseRecentLog;,,Rcode:// ToolSet browseClass: ChangeSet category: 'class changes';,,Rcode:// ToolSet browseClass: ChangeSet category: 'method changes';,,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:// MenuMorph new in: [:menu |
TheWorldMainDockingBar instance scaleFactorsOn: menu.
menu popUpInWorld];,,LUserInterfaceTheme Hierarchy;,,LObject class themePriority;,,Rcode:// ToolSet browse: UserInterfaceThemeRequest selector: #doesNotUnderstand:;,,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:// (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;,,Rcode:// FontImporterTool open;,,Rcode:// (Project current world findA: SystemWindow) allMorphs detect: [:m | m isTextView and: [m text asString includesSubstring: 'font chooser']] ifFound: [:m | m textMorph chooseFont];,,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.
menu items second subMenu delete;,,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: #(numCharactersPerLine numCharactersPerLine:);,,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:// (Morph >> #setProperty:toValue:) browse;,,LMorph pointAtFraction:;,,Rcode:// self systemNavigation browseAllCallsOn: #evaluateExpression: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,,Rcode:// (2 @ 3) inspect;,,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 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:// TestCase class>>#generateLastStoredRunMethod;,,Rcode:// WidgetStub;,,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,,Rcode:// ToolSet browse: Process selector: #terminate;,,Rhttp://lists.squeakfoundation.org/pipermail/squeak-dev/2021-April/214633.html;,,Rcode:// '%5B%5D%20ensure%3A%20%5Bself%20halt%3A%20%27abandon%20here...%27%3B%20inform%3A%20%27...and%20this%20should%20not%20be%20executed%21%27%5D.' unescapePercents edit;,,Rhttp://lists.squeakfoundation.org/pipermail/squeak-dev/2021-May/215604.html;,,LRxParserTest testOptionalLookbehind2;,,b,,Rcode://SyntaxErrorNotification;,,Rcode://#retryWithNewSource:;,,Rcode://#asMutator;,,Rcode://#asSimpleSetter;,,Rcode://#allowBlockArgumentAssignment;,,i,,LProcess terminate;,,b,,LObject becomeForward:;,,LArray elementsForwardIdentityTo:;,,b,,cblue;,bcblue;,cblue;,bcblue;,cblue;,bcblue;,cblue;,bcblue;,cblue;,bcblue;,cblue;,bcblue;,cblue;,bcblue;,cblue;,bcblue;,cblue;,bcblue;,cblue;,bcblue;,!
\ No newline at end of file
+[: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 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:// TestCase class>>#generateLastStoredRunMethod;,,Rcode:// WidgetStub;,,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,,Rcode:// ToolSet browse: Process selector: #terminate;,,Rhttp://lists.squeakfoundation.org/pipermail/squeak-dev/2021-April/214633.html;,,LRxParserTest testOptionalLookbehind2;,,b,,Rcode://SyntaxErrorNotification;,,Rcode://#retryWithNewSource:;,,Rcode://#asMutator;,,Rcode://#asSimpleSetter;,,Rcode://#allowBlockArgumentAssignment;,,i,,LProcess terminate;,,b,,b,,LObject becomeForward:;,,LArray elementsForwardIdentityTo:;,,b,,Rcode:// Warning;,,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;,!
\ No newline at end of file