Visual Environment
- Camera is panned to newly created nodes.
- Long names on the Node Searcher's list are truncated. The part of the
 name that doesn't fit in the Searcher's window is replaced with an ellipsis
 character ("…").
- Magnet Alignment algorithm is used while placing new nodes. When we
 find an available free space for a new node, the node gets aligned with the
 surrounding nodes horizontally and vertically. This helps to preserve a nice
 grid-like layout for all the nodes.
- Nodes created via the TAB key or by clicking the (+) button on the
 screen are now placed below all the selected nodes when more than one node is
 selected. (Previously, they were placed below the first node that was
 selected.) This makes it easier to achieve a compact, vertical layout of the
 graph.
- Nodes created near existing nodes via the TAB key or by dropping a
 connection are now repositioned and aligned to existing nodes. This is
 to make the resulting graph prettier and avoid overlapping. In such cases,
 created nodes will be placed below an existing node or on the bottom-left
 diagonal if there is no space underneath.
- Nodes can be added to the graph by double-clicking the output ports of
 existing nodes (or by clicking them with the right mouse button).
- Node Searcher preserves its zoom factor. The visible size of the node
 searcher and edited node is now fixed. It simplifies node editing on
 non-standard zoom levels.
- Nodes can be added to the graph by clicking (+) button on the screen.
 The button is in the bottom-left corner. Node is added at the center or pushed
 down if the center is already occupied by nodes.
- Maximum zoom factor is limited to 1.0x if IDE is not in Debug Mode.
- Debug Mode for Graph Editor can be activated/deactivated using a
 shortcut. It allows access to a set of restricted features. See
 debug-shortcuts.
- New nodes can be created by dragging and dropping a connection on the
 scene.
- Node connections can be dropped by pressing the Esc key while dragging
 them.
- Added support of source maps for JS-based visualizations.
- Fixed the alignment of newly created nodes to existing nodes with
 visualizations enabled. When applicable, new nodes are now placed below
 visualizations. (Previously, they were placed to the left of the
 visualizations.)
- Fixed histograms coloring and added a color legend.
- Lazy visualization for scatter plot.
- Fixed broken node whose expression contains non-ASCII characters.
- Fixed developer console warnings about views being created but not
 registered.
- Fixed developer console errors related to Language Server (mentioning code
 3003 and "Invalid version"), occurring during project opening and after new
 node cration.
- Fixed developer console error about failing to decode a notification
 "executionContext/visualisationEvaluationFailed"
- New Version of the Node Searcher - the Component Browser The available
 methods, atoms and functions are presented in nice, categorized view. The most
 popular tools are available at hand. The panel is unstable, and thus is
 available under the--enable-new-component-browserflag.
- Fixed error handling during startup. This prevents entering IDE into a
 "zombie" state, where processes were started but not visible to user. They
 could cause issues with starting further IDE instances.
- New nodes are created in the project source when the searcher is opened and a
 new node is created.
- Proper Polyglot Vector and Array Support
- IDE uses new visualization API.
- Visualization of long textual values improved
EnsoGL (rendering engine)
- You can change font and set letters bold in the text::Area
 component. Use theset_fontand
 set_bold_bytesrespectively.
- Fixed a text rendering issue in nested sublayer.
- Added a new component: Grid View. It's parametrized by Entry object,
 display them arranged in a Grid. It does not instantiate all entries, only
 those visible, and re-use created entries during scrolling thus achieving
 great performance. There are variants of grid view with selection and
 highlight, scrollbars, and both.
Enso Standard Library
- Implemented Vector.distinctallowing to remove duplicate elements from a
 Vector
- Implemented Duration.time_executionallowing timing of the execution of an
 expression within the UI
- Improved performance of Vector.filterandVector.each; implemented
 Vector.filter_with_index. MadeVector.ataccept negative indices and
 ensured it fails with a dataflow error on out of bounds access instead of an
 internal Java exception.
- Implemented the Table.select_columnsoperation.
- Implemented the Table.remove_columnsandTable.reorder_columns
 operations.
- Implemented the Table.sort_columnsoperation.
- Fixed Vector.sortto handle tail-recursive comparators
- Implemented Range.find,Table.rename_columnsand
 Table.use_first_row_as_namesoperations
- Implemented Text.atandText.is_digitmethods
- Implemented Runtime.get_stack_tracetogether with some utilities to process
 stack traces and code locations
- Implemented Vector.flatten
- Significant performance improvement in Natural_Orderand newFaker
 methods added toStandard.Test
- Implemented Integer.parse
- Made Text.compare_tocorrectly handle Unicode normalization
- Extend Text.containsAPI to support regex and case insensitive
 search.
- Implemented new Text.takeandText.dropfunctions, replacing existing
 functions
- Implemented new Text.starts_withandText.ends_withfunctions, replacing
 existing functions
- Implemented Text.to_case, replacingText.to_lower_caseand
 Text.to_upper_case
- Implemented initial Table.group_byfunction on Standard.Table
- Implemented Text.padandText.trim
- Updated Text.repeatand added*operator shorthand
- General improved Vector performance and new Vector.each_with_index,
 Vector.fold_with_indexandVector.takemethods.
- Implemented new Text.insertmethod
- Implemented Bool.compare_tomethod
- Implemented Map.first,Map.lastfunctions. ExpandedTable.group_byto
 also compute mode, percentile, minimum, maximum.
- Implemented Text.location_ofandText.location_of_allmethods.
- Replaced Table.group_bywithTable.aggregate
- Implemented Panic.catchand helper functions for handling errors. Added a
 type parameter toPanic.recoverto recover specific types of errors.
- Added warning handling to Table.aggregate
- Improved performance of Table.aggregateand full warnings
 implementation
- Implemented Text.reverse
- Implemented support for most Table aggregations in the Database
 backend.
- Update Text.replaceto new API.
- Add encoding support to Text.bytesandText.from_bytes. Renamed and added
 encoding toFile.read_text. NewFile.readAPI.
- Improved the Rangetype. Added adown_tocounterpart toup_toand
 with_stepallowing to change the range step.
- Aligned Text.splitAPI with other methods and addedText.lines.
- Implemented a basic reader for the Delimitedfile format.
- Implemented a reader for the Excelfile format.
- Added custom encoding support to the Delimitedfile format reader.
- Implemented computemethod onVectorfor statistics calculations.
- Promote get and put to be methods of Ref type rather than of Ref
 module
- Implemented Table.parse_values, parsing text columns according to a
 specified type.
- Promote with, take, finalize to be methods of Managed_Resource
 instance
- Implemented automatic type detection for Table.parse_values.
- Integrated value parsing with the Delimitedfile reader.
- Implemented the Infersetting for headers in theDelimitedfile format
 and made it the default.
- Implemented a Table.from Textconversion allowing to parse strings
 representingDelimitedfiles without storing them on the filesystem.
- Added rank data, correlation and covariance statistics for Vector
- Implemented Table.order_byfor the SQLite backend.
- Implemented Table.order_byfor the PostgreSQL backend.
- Implemented Table.order_byfor the in-memory table.
- Renamed File_Format.TexttoPlain_Text, updatedFile_Format.Delimited
 API and added builders for customizing less common settings.
- Allow control of sort direction in FirstandLastaggregations.
- Implemented Text.write, replacingFile.write_text.
- [Removed obsolete select,group,sortand releated types from tables.]
 3519
- Removed obsolete from_xlsandfrom_xlsxfunctions. Added support for
 reading column names from first row inFile_Format.Excel
- Added File_Format.Delimitedsupport toTable.writefor new files.
- Adjusted Database.connectAPI to new design.
- Added File_Format.Excelsupport toTable.writefor new files.
- identity,const,flip,curry,uncurry functions
- Added append support for File_Format.Excel.
- Added support for custom encodings in File_Format.Delimitedwriting.
- Allow filtering caught error type in Error.catch.
- Implemented Appendmode forFile_Format.Delimited.
- Added Vector.write_bytesfunction and removed oldFile.write_bytes
- Added line_endingsandcomment_characteroptions to
 File_Format.Delimited.
- Fixed the case of various type names and library paths
- Added support for parsing .pgpassfile andPG*environment variables for
 the Postgres connection
- Added Regressionto theStandard.Baselibrary and removed legacyModel
 type fromStandard.Table.
- Created Index_Sub_Rangetype and updatedText.takeand
 Text.drop.
- Added Vector.from_polyglot_arrayto makeVectors backed by polyglot
 Arrays
- Updated Vector.takeandVector.dropand removed their obsolete
 counterparts.
- Short-hand syntax for order_byadded.
- Expanded Table.atto support index access and addedTable.column_count
 method.
- Removed Array.set_at.
- Added various date part functions to DateandDate_Time.
- Implemented Table.takeandTable.dropfor the in-memory backend.
- Implemented specialized storage for the in-memory Table.
- Implemented Table.distinctfor the in-memory backend.
- Added databases,schemas,tablessupport to database Connection.
- Implemented start_ofandend_ofmethods for date/time types allowing to
 find start and end of a period of time containing the provided time.
Enso Compiler
- Added overloaded fromconversions.
- Upgraded to Graal VM 21.3.0
- Added the ability to decorate values with warnings.
- Fixed issues related to constructors' default arguments
- Fixed compiler issue related to module cache.
- Fixed execution of defaulted arguments of Atom Constructors
- Converting Enso Date to java.time.LocalDate and back
- Incremental Reparsing of a Simple Edits
- Functions with all-defaulted arguments now execute automatically
- Provide tagValuesfor function arguments in the language server
- Delay construction of Truffle nodes to speed initialization
- Frgaal compiler integration to allow for latest Java constructs
- Support for Chrome developer tools --inspect option
- Move Builtin Types and Methods definitions to stdlib
- Reduce boilerplate by generating BuiltinMethod nodes from simple method
 signatures
- Generate boilerplate classes related to error handling and varargs in
 builtins from method signatures
- Avoid needless concatenations of warning/error messages
- Added a full-blown DSL for builtins
- Integration of Enso with Ideal Graph Visualizer
- Lazy evaluation of RHS argument for || and &&
- Drop Core implementation of IR
- Replace thiswithself
- Introduce a smaller version of the standard library, just for testing
- Remove hereand make method name resolution case-sensitive
- Explicit self
- Added benchmarking tool for the language server
- Support module imports using a qualified name
- Enable caching in visualisation functions
- Update Scala compiler and libraries
- Support importing module methods
- Support Autosave for open buffers
- Support pattern matching on constants
- Builtin Date_Time, Time_Of_Day and Zone types for better polyglot
 support
- Implement new specification of data types: typehas a runtime
 representation, every atom has a type
- main = "Hello World!" is valid Enso sample