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-browser
flag. - 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
- Selecting a suggestion from the searcher or component browser now updates the
visualisation of the edited node to preview the results of applying the
suggestion.
EnsoGL (rendering engine)
- You can change font and set letters bold in the
text::Area
component. Use theset_font
and
set_bold_bytes
respectively. - 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.distinct
allowing to remove duplicate elements from a
Vector - Implemented
Duration.time_execution
allowing timing of the execution of an
expression within the UI - Improved performance of
Vector.filter
andVector.each
; implemented
Vector.filter_with_index
. MadeVector.at
accept 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_columns
operation. - Implemented the
Table.remove_columns
andTable.reorder_columns
operations. - Implemented the
Table.sort_columns
operation. - Fixed
Vector.sort
to handle tail-recursive comparators - Implemented
Range.find
,Table.rename_columns
and
Table.use_first_row_as_names
operations - Implemented
Text.at
andText.is_digit
methods - Implemented
Runtime.get_stack_trace
together with some utilities to process
stack traces and code locations - Implemented
Vector.flatten
- Significant performance improvement in
Natural_Order
and newFaker
methods added toStandard.Test
- Implemented
Integer.parse
- Made
Text.compare_to
correctly handle Unicode normalization - Extend
Text.contains
API to support regex and case insensitive
search. - Implemented new
Text.take
andText.drop
functions, replacing existing
functions - Implemented new
Text.starts_with
andText.ends_with
functions, replacing
existing functions - Implemented
Text.to_case
, replacingText.to_lower_case
and
Text.to_upper_case
- Implemented initial
Table.group_by
function on Standard.Table - Implemented
Text.pad
andText.trim
- Updated
Text.repeat
and added*
operator shorthand - General improved Vector performance and new
Vector.each_with_index
,
Vector.fold_with_index
andVector.take
methods. - Implemented new
Text.insert
method - Implemented
Bool.compare_to
method - Implemented
Map.first
,Map.last
functions. ExpandedTable.group_by
to
also compute mode, percentile, minimum, maximum. - Implemented
Text.location_of
andText.location_of_all
methods. - Replaced
Table.group_by
withTable.aggregate
- Implemented
Panic.catch
and helper functions for handling errors. Added a
type parameter toPanic.recover
to recover specific types of errors. - Added warning handling to
Table.aggregate
- Improved performance of
Table.aggregate
and full warnings
implementation - Implemented
Text.reverse
- Implemented support for most Table aggregations in the Database
backend. - Update
Text.replace
to new API. - Add encoding support to
Text.bytes
andText.from_bytes
. Renamed and added
encoding toFile.read_text
. NewFile.read
API. - Improved the
Range
type. Added adown_to
counterpart toup_to
and
with_step
allowing to change the range step. - Aligned
Text.split
API with other methods and addedText.lines
. - Implemented a basic reader for the
Delimited
file format. - Implemented a reader for the
Excel
file format. - Added custom encoding support to the
Delimited
file format reader. - Implemented
compute
method onVector
for 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
Delimited
file reader. - Implemented the
Infer
setting for headers in theDelimited
file format
and made it the default. - Implemented a
Table.from Text
conversion allowing to parse strings
representingDelimited
files without storing them on the filesystem. - Added rank data, correlation and covariance statistics for
Vector
- Implemented
Table.order_by
for the SQLite backend. - Implemented
Table.order_by
for the PostgreSQL backend. - Implemented
Table.order_by
for the in-memory table. - Renamed
File_Format.Text
toPlain_Text
, updatedFile_Format.Delimited
API and added builders for customizing less common settings. - Allow control of sort direction in
First
andLast
aggregations. - Implemented
Text.write
, replacingFile.write_text
. - [Removed obsolete
select
,group
,sort
and releated types from tables.]
3519 - Removed obsolete
from_xls
andfrom_xlsx
functions. Added support for
reading column names from first row inFile_Format.Excel
- Added
File_Format.Delimited
support toTable.write
for new files. - Adjusted
Database.connect
API to new design. - Added
File_Format.Excel
support toTable.write
for new files. - identity,const,flip,curry,uncurry functions
- Added append support for
File_Format.Excel
. - Added support for custom encodings in
File_Format.Delimited
writing. - Allow filtering caught error type in
Error.catch
. - Implemented
Append
mode forFile_Format.Delimited
. - Added
Vector.write_bytes
function and removed oldFile.write_bytes
- Added
line_endings
andcomment_character
options to
File_Format.Delimited
. - Fixed the case of various type names and library paths
- Added support for parsing
.pgpass
file andPG*
environment variables for
the Postgres connection - Added
Regression
to theStandard.Base
library and removed legacyModel
type fromStandard.Table
. - Created
Index_Sub_Range
type and updatedText.take
and
Text.drop
. - Added
Vector.from_polyglot_array
to makeVector
s backed by polyglot
Arrays - Updated
Vector.take
andVector.drop
and removed their obsolete
counterparts. - Short-hand syntax for
order_by
added. - Expanded
Table.at
to support index access and addedTable.column_count
method. - Removed
Array.set_at
. - Added various date part functions to
Date
andDate_Time
. - Implemented
Table.take
andTable.drop
for the in-memory backend. - Implemented specialized storage for the in-memory Table.
- Implemented
Table.distinct
for the in-memory backend. - Added
databases
,schemas
,tables
support to database Connection. - Implemented
start_of
andend_of
methods for date/time types allowing to
find start and end of a period of time containing the provided time. - Implemented
type_of
andis_of_type
methods for getting the type of a
value and comparing types, respectively. - Implemented
work_days_until
for counting work dys between dates and
add_work_days
which allows to shift a date by a number of work days. - Added
query
andread
functions to Database connections. - Added
Date_Period.Week
tostart_of
andend_of
methods.
Enso Compiler
- Added overloaded
from
conversions. - 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
tagValues
for 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
this
withself
- Introduce a smaller version of the standard library, just for testing
- Remove
here
and 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
- [Generate native-image for engine-runner][3638]
- Support pattern matching on constants
- Builtin Date_Time, Time_Of_Day and Zone types for better polyglot
support - Implement new specification of data types:
type
has a runtime
representation, every atom has a type - main = "Hello World!" is valid Enso sample
- [Invalidate module's IR cache if imported module changed][3703]
- [Don't rename imported Main module that only imports names][3710]