Interpreter/Runtime
- Upgraded the underlying runtime to
GraalVM 21.1.0
(#1738). This brings a raft of
bug-fixes and improvements to how quickly Enso can reach its peak performance.
- Added support for bidirectional dataflow tracking to the
DataflowAnalysis
pass (#1748). This will allow
the interpreter to perform more detailed analyses in the future to enable
optimisations and new features.
Tooling
- Added support for higher-kinded types in suggestions in the language server
(#1712). This allows the
searcher to make more accurate suggestions when working with collection types.
- Fixed an issue where symlinks were not extracted properly when installing a
runtime for Enso (#1718).
- Implemented log masking (#1732).
This feature masks personally identifiable information in the logs, such as
code literals, computed values, and user environment variables.
- Added support for evaluating one-shot expressions on the result values of
arbitrary expressions (#1749).
This is very useful for enabling more advanced introspection in the IDE.
- Added the
workspace/projectInfo
endpoint to the language server
(#1759). This allows the IDE to
get information about the running project in contexts where the project
manager isn't available or works differently.
- Added the
file/checksum
endpoint to the language server
(#1787). This allows the IDE to
verify the integrity of files that it has transferred. The checksum is
calculated in a streaming fashion so the checksummed file need not be resident
in memory all at once.
- Added support for reading and writing byte ranges in files remotely
(#1795). This allows the IDE to
transfer files to a remote back-end in a streaming fashion.
- Added support for multiple content roots in the language server
(#1800). It is not yet exposed
to the IDE, as this will be done as part of future work.
- Modified the
package.yaml
format in preparation for the library ecosystem
(#1797). Theengine-version
field has been deprecated in favour of anedition
field that allows to set
up the engine version and dependency resolution using the upcoming Edition
system. New tools will still be able to read the old format, but upon
modification, they will save changes in the new format. As theedition
file
did not exist in the older version, old tools will actually correctly load the
migrated package file (as we allow for unknown fields), but they will not know
how to interpret the newedition
field and so will fall back to using the
default
engine version, which may be unexpected. Ideally, after migration,
the project should be used only with the new tools. The affected tools are the
Launcher and the Project Manager.
Libraries
- Overhauled the examples throughout the standard library
(#1707,
#1725, and
#1731). These examples all now
conform to a standard format and have been tested to work.
- Made some miscellaneous fixes to the
HTTP
portion of theBase
library that
fix a few bugs (#1722).
- Removed reflective access when loading the OpenCV library
(#1727). Illegal reflective
access operations were deprecated and will be denied in future JVM releases.
- Overhauled the types we use for errors throughout the standard library
(#1734). They are now much more
informative, and should provide more clarity when things go wrong.
- Re-wrote the documentation generator for the Enso website from Python into
Scala (#1729). This has greatly
improved the performance, enabling us to generate the documentation structure
for the entire standard library 8-10 times faster than before.
- Implemented Standard Library methods for controlling default visualizations in
the graphical interface (#1786).
Miscellaneous
- Adding a pipeline for automatic nightly builds
(#1689). During the night after
each workday any new changes to themain
branch are built and released as a
nightly build. The nightly builds can be useful to preview in-development
features, but they should not be relied on as they are not considered stable.
Only the 3 latest nightly builds are kept, so the nightly versions become
obsolete very quickly.