2024.1.1-nightly.2024.4.14
版本发布时间: 2024-04-14 12:29:41
enso-org/enso最新发布版本:2024.5.1-nightly.2024.9.25(2024-09-25 11:49:48)
Download
Enso IDE
Enso IDE is the main product of the Enso project. The packages are stand-alone, they contain both GUI and the backend.
Download links:
This is the recommended download for most users.
Enso Engine
If you are interested in using Enso Engine command line tools only, download the Enso Engine bundle.
Download links:
These are archives containing the Enso portable distribution. User is responsible for setting up the environment variables and adding the bin
directory to the PATH
.
Note that these distributions do not allow you to use the Enso IDE.
It is recommended only for advanced users, who want to just try the compiler CLI.
Anonymous Data Collection
Please note that this release collects anonymous usage data which will be used to improve Enso and prepare it for a stable release. We will switch to opt-in data collection in stable version releases. The usage data will not contain your code (expressions above nodes), however, reported errors may contain brief snippets of out of context code that specifically leads to the error, like "the method 'foo' does not exist on Number". The following data will be collected:
- Session length.
- Graph editing events (node creation, deletion, position change, connect, disconnect, collapse, edit start, edit end). This will not include any information about node expressions used.
- Navigation events (camera movement, scope change).
- Visualization events (visualization open, close, switch). This will not include any information about the displayed data nor the rendered visualization itself.
- Project management events (project open, close, rename).
- Errors (IDE crashes, WASM panics, Project Manager errors, Language Server errors, Compiler errors).
- Performance statistics (minimum, maximum, average GUI refresh rate).
Changelog
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 <kbd>TAB</kbd> 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 <kbd>TAB</kbd> 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 can be disabled with the `--enable-new-component-browser=false` 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.
- Remove here keyword from IDE.
- Shortcut changes: Pressing `Enter` when no node is edited opens Component Browser. Entering node shortcut changed to `cmd` + `Enter`.
- Added support for scrolling by pressing and holding a mouse button on a scrollbar.
- Added scroll bounce animation which activates when scrolling past the end of scrollable content.
- The default text visualisation now loads its content lazily from the backend. This means that the visualisation cannot be overwhelmed by large amounts of data.
- Added project snapshot saving on shortcut
- The color of the displayed project name indicates whether the project's current state is saved in a snapshot. The project name is darker when the project is changed from the last saved snapshot and lighter when the snapshot matches the current project state.
- Added shortcut to interrupt the program
- Added suggestion dropdown for function arguments. The dropdown is present only when the argument is of type that has a predefined set of values.
- Separate component browser navigator sections for modules imported from different namespaces
- Internal components (private API) are not displayed in the component browser.
- The correct default visualisation for tables is shown on new nodes.
- Added restoring of last project snapshot on shortcut.
- Added contextual suggestions to argument dropdowns. Dropdowns will now contain suggestions which are based on evaluated data.
- Added a shortcut to show internal components (private API) in the component browser.
- Improved component browser entry filtering and sorting. The component browser will now provide suggestions matching either the component's label or the corresponding code.
- Improved argument placeholder resolution in more complex expressions. It is now possible to drop node connections onto missing arguments of chained and nested function calls.
- The component browser suggestions take into account entry aliases. The searcher input is now matched to entry aliases too. The alias match is used to filter and sort component browser entries.
- The Component Browser icons are cached on texture improving its performance on slower machines.
- Fixed missing result preview when editing nodes.
- Application retries its initialization after failures, allowing a reconnecting after connectivity problems.
- Improved Component Browser Filtering. The best match is always selected first, and the groups are rearranged, so the best matches are on the bottom.
- Named arguments syntax is now recognized in IDE. Connections to function arguments will now use named argument syntax instead of inserting wildcards on all preceding arguments.
- Added boilerplate React app for authorization via Cognito+AWS Amplify. This PR adds a React app that renders the dashboard (which has been ported from the cloud. The dashboard displays a list of projects, and allows users to open them in the IDE (which is not part of the React app, but can be switched to from the dashboard). The PR also adds authentication+authorization (i.e., sign up and sign in for users), via either email/password or GitHub/Google.
- New Enso documentation parser. Smaller and faster; enables planned improvements to internal documentation representation.
- Dropdown widgets now support custom labels and automatically generate shortened labels for entries with long module paths. When an option is selected from the dropdown, the necessary module imports are inserted, eliminating the need for fully qualified names.
- The IDE now has a new UI element for selecting the execution mode of the project.
- Added tooltips to icon buttons for improved usability. Users can now quickly understand each button's function.
- File associations are created on Windows and macOS. This allows opening Enso files by double-clicking them in the file explorer.
- AI-powered code completions. It is now possible to get AI-powered completions when using node searcher with Tables.
- Added capability to create node widgets with complex UI. Node widgets such as dropdown can now be placed in the node and affect the code text flow.
- The IDE UI element for selecting the execution mode of the project is now sending messages to the backend..
- Feedback when renaming a project. When the user tries to rename the project to an invalid name, a helpful error message is shown and the text field stays the same as to give the user the opportunity to fix the mistake.
- Area selectionof nodes no longer takes into account the visualisation that belongs to the node..
- List Editor Widget. Now you can edit lists by clicking buttons on nodes or by dragging the elements.
- Visualisations now show a loading spinner while waiting on data..
- Fixed text visualisations which were being cut off at the last line.
- Fixed a bug where, when scrolling or dragging on a full-screen visualization, the view of the graph changed as well.
- Changed the shortcut for restoring to the last saved version of a project from <kbd>cmd</kbd>+<kbd>r</kbd> to <kbd>cmd</kbd>+<kbd>shift</kbd>+<kbd>r</kbd> to make it less likely that it would be triggered by accident. As a consequence, the program execution shortcuts changed from <kbd>cmd</kbd>+<kbd>shift</kbd>+<kbd>t</kbd>/<kbd>r</kbd> to <kbd>cmd</kbd>+<kbd>alt</kbd>+<kbd>t</kbd>/<kbd>r</kbd>.
- Fixed a bug where selecting a nested breadcrumb would cause the order of breadcrumbs to change incorrectly.
- Changed the shortcut to show the full-screen visualization for a node from <kbd>space</kbd> <kbd>space</kbd> to <kbd>shift</kbd>+<kbd>space</kbd>. so that it doesn't interfere with the shortcut for toggling the small visualization.
- Cloud dashboard, which supersedes the startup screen. Features also added in various other PRs. The new dashboard includes tables for projects, folders, files and secrets, a list of templates from which new projects can be created, a user menu, and a search bar.
- The Application will try to reload file in backend on synchronization failure. It should make it more resilient to connectivity issues and occasional bugs. The reload may be forced by the user with <kbd>cmd</kbd>+<kbd>shift</kbd>+<kbd>x</kbd> shortcut.
- When selecting a function from the main module through the component browser, it is now referenced via the `Main` namespace instead of the project namespace, e.g. `Main.func1` instead of `MyProject.func1`. This makes it robust against project name changes.
- Added a button to return from an opened project back to the project dashboard.
- Keyboard shortcuts for graph editing are now disabled when the full-screen visualization is active.
- A loading animation is now shown when opening and creating projects, as the previous behaviour of showing a blank screen while the project was being loaded was potentially confusing to users.
- Error message is displayed in the status bar when the backend reports execution failed.
- Performance and readability of documentation panel was improved. The documentation is now split into separate pages, which are much smaller.
- IDE no longer inserts redundant imports when selecting options from dropdown widgets. The code was unified with the component browser, and it now correctly handles reexports and already existing imports.
- Fixed cursor position when ctrl-clicking the node. Sometimes ctrl-clicking to edit the node placed the mouse cursor in the wrong position in the text. This is fixed now.
- Added prototype AI Searcher that can be used to create new nodes from natural language input
- Allow visualization resizing. Now the user can adjust the visualization size by dragging its right and bottom borders. Visualization width also follows the node's width, and visualizations are aligned to the left side of the node.
- Component Browser was redesigned. The three columns of groups turned out to be non-practical, as they give too much information to comprehend. Also, filtering results was kept in groups making second-best match not easily available. Therefore, we introduced a new, impler CB design with single column.
- Help chat. The link to the Discord server is replaced with a chat bridge to the Discord server. This is intended to have the chat visible at the same time as the IDE, so that help can be much more interactive.
- New breadcrumbs design. Breadcrumbs now optionally show the icon of the item they represent. They also follow the new design of the component browser.
- [The libraries' authors may put entities to groups by adding GROUP tag in the docstring]. It was requested as more convenient way than specifying full names in package.yaml.
- Graph editor node was redesigned. Nodes have a color and icon matching the selected entry in the component browser. Clear separating lines between method arguments were added. The node selection was made easier with additional thick interactive selection border.
- The shortcut for opening Component Browser was changed to <kbd>enter</kbd>
- Connections to lamdas are displayed correctly. It is possible to drag a connection to any expression inside the lambda body.
- [Atom types in dropdowns do not produce redundant imports][#7670]. The possibility of imports conflicts is reduced.
- Copying and pasting a single node. Using the common <kbd>cmd</kbd>+<kbd>C</kbd> and <kbd>cmd</kbd>+<kbd>V</kbd> shortcuts, it is now possible to copy a single selected node and paste its code to the graph or another program.
EnsoGL (rendering engine)
- You can change font and set letters bold in the <code>text::Area</code> component. Use the <code>set_font</code> and <code>set_bold_bytes</code> 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.
- Massive improvements of text rendering performance. Different text instances are now reusing the shape shaders and the same sprite system under the hood. This drastically reduces the amount of required draw calls for scenes with a lot of text.
- Text rendering quality improvements. Glyphs are now hinted in a better way. Also, additional fine-tuning is performed per font and per host operating system.
- Display objects can now emit and receive events in the same style as JavaScript DOM events. The events system implements very similar behavior to the one described here: https://javascript.info/bubbling-and-capturing.
- Added a new component: Slider. It allows adjusting a numeric value with the mouse. The precision of these adjustments can be increased or decreased.
- Slider component functionality improvements. The slider component now supports multiple ways to handle out-of-range values. The slider's value can be edited as text, and a new vertical slider layout is available.
- Added ProjectsGrid view for Cloud Dashboard. It provides the first steps towards migrating the Cloud Dashboard from the existing React (web-only) implementation towards a shared structure that can be used in both the Desktop and Web versions of the IDE.
- Removed Cloud Dashboard. The Cloud Dashboard was being rewritten in EnsoGL but after internal discussion we've decided to rewrite it in React, with a shared implementation between the Desktop and Web versions of the IDE.
- Added a new component: Dropdown. A list of selectable labeled entries, suitable for single and multi-select scenarios.
- Compile-time shader optimizer was implemented. It is capable of extracting non-optimized shaders from the compiled WASM artifacts, running stand-alone optimization toolchain (glslc, spirv-opt, spirv-cross), and injecting optimized shaders back to WASM during its initialization process. Unfortunately, it caused our theme system to stop working correctly, because generated shaders differ per theme (only light theme is available, the dark theme has been disabled). We will support multiple themes in the future, but this is not on our priority list right now.
- Performance monitor was extended with the ability to print details of actions performed in a given frame. In particular, you can now inspect names of all symbols rendered in a given frame. You can also pause the performance monitor and inspect results recorded in the past.
- ToggleButtons can now have tooltips.
- Rendering of tooltips was improved. Their text is now more vertically centered and the delay before showing them was extended.
- Accurate GPU performance measurements have been implemented. It is possible now to track both the time spent on both the CPU and the GPU sides.
- Support recovery from GL context loss. This allows the application to continue after an interruption to rendering, such as hibernation or movement of the application window to a display rendered by a different GPU.
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` and `Vector.each`; implemented `Vector.filter_with_index`. Made `Vector.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` and `Table.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` and `Text.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 new `Faker` methods added to `Standard.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` and `Text.drop` functions, replacing existing functions
- Implemented new `Text.starts_with` and `Text.ends_with` functions, replacing existing functions
- Implemented `Text.to_case`, replacing `Text.to_lower_case` and `Text.to_upper_case`
- Implemented initial `Table.group_by` function on Standard.Table
- Implemented `Text.pad` and `Text.trim`
- Updated `Text.repeat` and added `*` operator shorthand
- General improved Vector performance and new `Vector.each_with_index`, `Vector.fold_with_index` and `Vector.take` methods.
- Implemented new `Text.insert` method
- Implemented `Bool.compare_to` method
- Implemented `Map.first`, `Map.last` functions. Expanded `Table.group_by` to also compute mode, percentile, minimum, maximum.
- Implemented `Text.location_of` and `Text.location_of_all` methods.
- Replaced `Table.group_by` with `Table.aggregate`
- Implemented `Panic.catch` and helper functions for handling errors. Added a type parameter to `Panic.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` and `Text.from_bytes`. Renamed and added encoding to `File.read_text`. New `File.read` API.
- Improved the `Range` type. Added a `down_to` counterpart to `up_to` and `with_step` allowing to change the range step.
- Aligned `Text.split` API with other methods and added `Text.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 on `Vector` 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 the `Delimited` file format and made it the default.
- Implemented a `Table.from Text` conversion allowing to parse strings representing `Delimited` 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` to `Plain_Text`, updated `File_Format.Delimited` API and added builders for customizing less common settings.
- Allow control of sort direction in `First` and `Last` aggregations.
- Implemented `Text.write`, replacing `File.write_text`.
- Removed obsolete `select`, `group`, `sort` and releated types from tables.
- Removed obsolete `from_xls` and `from_xlsx` functions. Added support for reading column names from first row in `File_Format.Excel`
- Added `File_Format.Delimited` support to `Table.write` for new files.
- Adjusted `Database.connect` API to new design.
- Added `File_Format.Excel` support to `Table.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 for `File_Format.Delimited`.
- Added `Vector.write_bytes` function and removed old `File.write_bytes`
- Added `line_endings` and `comment_character` options to `File_Format.Delimited`.
- Fixed the case of various type names and library paths
- Added support for parsing `.pgpass` file and `PG*` environment variables for the Postgres connection
- Added `Regression` to the `Standard.Base` library and removed legacy `Model` type from `Standard.Table`.
- Created `Index_Sub_Range` type and updated `Text.take` and `Text.drop`.
- Added `Vector.from_polyglot_array` to make `Vector`s backed by polyglot Arrays
- Updated `Vector.take` and `Vector.drop` and removed their obsolete counterparts.
- Short-hand syntax for `order_by` added.
- Expanded `Table.at` to support index access and added `Table.column_count` method.
- Removed `Array.set_at`.
- Added various date part functions to `Date` and `Date_Time`.
- Implemented `Table.take` and `Table.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` and `end_of` methods for date/time types allowing to find start and end of a period of time containing the provided time.
- Implemented `type_of` and `is_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` and `read` functions to Database connections.
- Added `Date_Period.Week` to `start_of` and `end_of` methods.
- Replaced `Table.where` with a new API relying on `Table.filter`.
- Added `Filter_Condition` to `Vector`, `Range` and `List`.
- Extended `Filter_Condition` with `Is_Empty`, `Not_Empty`, `Like` and `Not_Like`.
- Reimplemented `Duration` as a built-in type.
- Implemented `Table.replace_text` for in-memory table.
- Extended `Filter_Condition` with `Is_In` and `Not_In`.
- Replaced `Table.drop_missing_rows` with `filter_blank_rows` with an updated API.
- Replaced `Table.drop_missing_columns` with `Table.remove_columns Column_Selector.Blank_Columns` by adding the new column selector variant.
- Implemented `Table.rows` giving access to a vector of rows.
- Define Enso epoch start as 15th October 1582
- Implemented `Period` type
- Implemented new functions on Column and added expression syntax support to create derived Columns.
- Added support for milli and micro seconds, new short form for rename_columns and fixed issue with compare_to versus Nothing
- Aligned `Text.match`/`Text.locate` API
- There is a new API to lazily feed visualisation information to the IDE.
- Added `transpose` and `cross_tab` to the In-Memory Table.
- Improvements to JSON, Pair, Statistics and other minor tweaks.
- Overhauled the JSON support (now based of JavaScript), `Data.fetch` and other minor tweaks
- Enable Date, Time and DateTime to be read and written to Excel.
- Aligning core APIs for Vector, List and Range. Adding some missing functions to the types.
- Implemented `Table.distinct` for Database backends.
- Implemented `Table.union` for the in-memory backend.
- Implemented `Table.cross_join` and `Table.zip` for the in-memory backend.
- Updated `Text.starts_with`, `Text.ends_with` and `Text.contains` to new simpler API.
- Updated `Table.set` to new API. New `Column.parse` function and added case sensitivity to `Filter_Condition` and column functions.
- Updated column selector APIs and new `Excel_Workbook` type.
- Moved regex functionality out of `Text.locate` and `Text.locate_all` into `Text.match` and `Text.match_all`.
- `File.parent` may return `Nothing`.
- Removed non-regex functionality from `is_match`, `match`, and `match_all`, and renamed them to `match`, `find`, `find_all` (respectively).
- Updated `rename_columns` to new API. Added `first_row`, `second_row` and `last_row` to Table types
- Introducing `Meta.Type`.
- Remove many regex compile flags; separated `match` into `match` and `match_all`.
- Aligned names of columns created by column operations.
- Improved `cross_tab`. Renamed `fill_missing` and `is_missing` to `fill_nothing` and `is_nothing`. Added `fill_empty`.
- Removed many regex compile flags from `replace`; added `only_first` and `use_regex` flag.
- Implemented proper support for Value Types in the Table library.
- Removed many regex compile flags from `split`; added `only_first` and `use_regex` flag.
- Added `Text.tokenize`
- Added support for Date/Time columns in the Postgres backend and added `year`/`month`/`day` operations to Table columns.
- `Text.split` can now take a vector of delimiters.
- Add `has_warnings`, `remove_warnings` and `throw_on_warning` extension methods.
- Implemented `Table.union` for the Database backend.
- Array & Vector have the same methods & behavior
- Implemented `Table.split` and `Table.tokenize` for in-memory tables.
- Added `trim` and `replace` to `Column`. Enhanced number parsing with support for thousands and decimal point automatic detection.
- Implemented `Table.parse_text_to_table`.
- Added `Table.parse_to_columns`.
- Added parsing methods for `Integer`, `Decimal`, `Json`, `Date`, `Date_Time`, `Time_Of_Day`, `Time_Zone`, and `URI` to `Text`.
- Implemented `create_database_table` allowing upload of in-memory tables.
- Added execution context control to writing files and dry run capabilities to `Text.write`.
- Implemented `create_database_table` allowing saving queries as database tables.
- Implemented `Column.format` for in-memory `Column`s.
- Added `at_least_one` flag to `Table.tokenize_to_rows`.
- Moved `Redshift` connector into a separate `AWS` library.
- Added `Date_Range`.
- Implemented the `cast` operation for `Table` and `Column`.
- Added `.round` and `.int` to `Integer` and `Decimal`.
- Added `.round`, `.truncate`, `.ceil`, and `.floor` to `Column`.
- Added execution control to `Table.write` and various bug fixes.
- Implemented `Table.add_row_number`.
- Handling edge cases in rounding.
- Split `Table.create_database_table` into `Connection.create_table` and `Table.select_into_database_table`.
- Speed improvements to `Column` `.truncate`, `.ceil`, and `.floor`.
- Implemented addition and subtraction for `Date_Period` and `Time_Period`.
- Added AWS credential support and initial S3 list buckets API.
- [Added `round`, `ceil`, `floor`, `truncate` to the In-Database Column type] 6988
- Implemented `Table.update_database_table`.
- Removed `module` argument from `enso_project` and other minor tweaks.
- Integrated Database write operations with Execution Contexts.
- `Column.fill_nothing` and `.fill_empty` no longer rename the column. Added `Table.fill_nothing` and `.fill_empty`.
- Implemented `add_row_number` for Database tables.
- [Added `replace` to in-memory table. Changed replace for `Text`, in-memory `Column`, and in-memory `Table` to take a `Regex` in addition to a `Text`.] 7223
- Added `cross_join` support to database tables.
- Improving date/time support in Table - added `date_diff`, `date_add`, `date_part` and some shorthands. Extended `Time_Period` with milli-, micro- and nanosecond periods.
- Implemented `replace` on database columns.
- Retire `Column_Selector` and allow regex based selection of columns.
- `Text.parse_to_table` can take a `Regex`.
- Expose `Text.normalize`.
- Implemented new value types (various sizes of `Integer` type, fixed-length and length-limited `Char` type) for the in-memory `Table` backend.
- Introducing generic `Any.to` conversion method
- Added `take` and `drop` to database tables.
- Added ability to specify expected value type in `Column.from_vector`, `Column.map` and `Column.zip`.
- Added `delete_rows` method to Database Table, changed the `update_database_table` API into `update_rows`.
- Added `Data.post` method to write to HTTP endpoints.
- Added support for S3. Using `Input_Stream` more for reading.
- Renamed `Decimal` to `Float`.
- Implemented `Date_Time_Formatter` for more user-friendly date/time format parsing.
- Added `Table.expand_column` and improved JSON deserialization.
- Implemented `Table.auto_value_types` for in-memory tables.
- Implemented Text.substring to easily select part of a Text field
- Implemented new selector for when parameter in `filter_blank_rows`, `select_blank_columns`, `remove_blank_columns`
- Implemented basic XML support
- Implemented `Table.lookup_and_replace` for the in-memory backend.
- Added `Column_Operation` to `Table.set` allowing for more streamlined flow of deriving column values in the GUI.
- Implemented `Table.expand_to_rows` for the in-memory backend.
- Added XML support for `.to Table` and `.expand_column`.
- Added `Previous_Value` option to `fill_nothing` and `fill_empty`.
- Added `Table.format` for the in-memory backend.
- Implemented truncate `Date_Time` for database backend (Postgres only).
- Initial Enso Cloud APIs.
- Renamed `replace` to `text_replace` and renamed `lookup_and_replace` to `merge` on `Table`.
- Errors thrown inside `map` are wrapped in `Map_Error`.
- Support for loading big Excel files.
- Added new `Filter_Condition`s - `Equal_Ignore_Case`, `Is_Nan`, `Is_Infinite` and `Is_Finite`.
- Support `on_problems=Problem_Behavior.Report_Warning` in `Vector.map`.
- Added text_length to Column
- Added none delimiter option for Data.Read
- Added text_left and text_right to Column
- Implement relational `NULL` semantics for `Nothing` for in-memory `Column` operations.
- Implement relational `NULL` semantics for `Nothing` for in-memory `Table` join operations.
- Attach a warning when Nothing is used as a value in a comparison or `is_in` `Filter_Condition`.
- Added `File_By_Line` type allowing processing a file line by line. New faster JSON parser based off Jackson.
- Implemented `Table.replace` for the in-memory backend.
- Allow removing rows using a Filter_Condition.
- Added `Table.to_xml`.
- Implemented Write support for `S3_File`.
- Implemented `Table.replace` for the database backend.
- Separate `Group_By` from `columns` into new argument on `aggregate`.
- Allow `copy_to` and `move_to` to work between local and S3 files.
- Adjusted expression handling and new `Simple_Expression` type.
- Allow reading Data Links configured locally or in the Cloud.
- Allow using `enso://` paths in `Data.read` and other places.
- Update the XML methods and add more capabilities to document.
- Added `Data.download` and a few other changes.
- Implement Data Links to Postgres (accessing a DB connection or a table directly)
- Added `Xml_Document.write`
- Added `select_by_type` and `remove_by_type` to `Table` and `DB_Table`
- Make File./ only accept Text
- Implemented Excel Data Link
- Added Table.running
- Added Google_Analytics.Read
- Added `Table.from_union` to allow expanding a vector of tables in one step
- Implemented constructors, comparisons, and arithmetic for a `Decimal` type.
- Allow `Table.replace` to take mutiple target columns.
- Initial Snowflake Support - ability to read and query, not a completed dialect yet.
- Make expand_to_rows, expand_column support Rows, Tables, Column data types
- Data Link for `Enso_File`.
- Added `pow`, `remainder`, and `div` to `Decimal`.
- Implemented `.to_integer`, `.to_float`, and `from` conversions for `Decimal`
- Made `Integer.%` consistent across all `Integer` values.
- Added `Decimal.parse` and `.format`.
- Added `Decimal.abs`, `.negate` and `.signum`.
- Added `Decimal.min` and `.max`.
- Added `Decimal.round`.
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` with `self`
- 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
- Using parser written in Rust.
- 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
- 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
- Don't rename imported Main module that only imports names
- Notify node status to the IDE
- Make instance methods callable like statics
- Distinguish static and instance methods
- By-type pattern matching
- Fix performance of method calls on polyglot arrays
- Improved support for static and non-static builtins
- Missing foreign language generates proper Enso error
- Connecting IGV 4 Enso with Engine sources
- Made Vector performance to be on par with Array
- Introduced IO Permission Contexts
- Accept Array-like object seamlessly in builtins
- Initialize Builtins at Native Image build time
- Split Atom suggestion entry to Type and Constructor
- Any number can be converted to double
- Update to GraalVM 22.3.0
- Connecting IGV 4 Enso with Engine sources
- Add the `Self` keyword referring to current type
- Support VCS for projects in Language Server
- Support multiple exports of the same module
- Import modules' extension methods only with unqualified imports
- Support expression evaluation in chromeinspector console
- Don't export polyglot symbols
- From/all import must not include module in name resolution
- Vector returns warnings of individual elements
- Enso.getMetaObject, Type.isMetaInstance and Meta.is_a consolidation
- Add executionContext/interrupt API command
- Any.== is a builtin method
- Simplify exception handling for polyglot exceptions
- Simplify compilation of nested patterns
- IGV can jump to JMH sources & more
- Basic support of VSCode integration
- Sync language server with file system after VCS restore
- `ArrayOverBuffer` behaves like an `Array` and `Array.sort` no longer sorts in place
- Implement hashing functionality for all objects
- Introducing Meta.atom_with_hole
- Report failures in name resolution in type signatures
- Attach visualizations to sub-expressions
- Add Meta.get_annotation method
- Resolve Fully Qualified Names
- Optimize Atom storage layouts
- Make instance methods callable like statics for builtin types
- Convert large longs to doubles, safely, for host calls
- Consistent ordering with comparators
- Profile engine startup
- Report type of polyglot values
- Engine can now recover from serialization failures
- Use sbt runEngineDistribution
- Update to GraalVM 22.3.1
- Cache library bindings to optimize import/export resolution
- Comparators support partial ordering
- Merge ordered and unordered comparators
- Use SHA-1 for calculating hashes of modules' IR and bindings
- Don't install Python component on Windows
- Detect potential name conflicts between exported types and FQNs
- Ensure calls involving warnings remain instrumented
- One can define lazy atom fields
- Replace IOContexts with Execution Environment and generic Context
- Vector.sort handles incomparable types
- Removing need for asynchronous thread to execute ResourceManager finalizers
- Warning.get_all returns only unique warnings
- Reimplement `enso_project` as a proper builtin
- Limit number of reported warnings per value
- Experimental support for Espresso Java interpreter
- Suggestions are updated only when the type of the expression changes
- Add project creation time to project metadata
- Upgrade GraalVM to 22.3.1 JDK17
- Ascribed types are checked during runtime
- Add compiler pass that discovers ambiguous and duplicated symbols
- Improve and colorize compiler's diagnostic messages
- Execute some runtime commands synchronously to avoid race conditions
- Automatic conversion for runtime checked arguments
- Scala 2.13.11 update
- Add special handling for static method calls on Any
- Improve parallel execution of commands and jobs in Language Server
- Added retries when executing GraalVM updater
- Add method call info for infix operators
- `executionComplete` response is sent on successful execution only
- Send info about function values
- Cache dataflow errors
- Add endpoint for downloading a project
- Update to GraalVM 23.0.0
- Using official BigInteger support
- Allow users to give a project other than Upper_Snake_Case name
- Support renaming variable or function
- Replace custom logging service with off the shelf library
- Only use types as State keys
- Allow Java Enums in case of branches
- Notification about the project rename action
- Use `numpy` & co. from Enso!
- Changed layout of local libraries directory, making it easier to reference projects next to each other
- Support runtime checks of intersection types
- Merge `Small_Integer` and `Big_Integer` types
- Inline type ascriptions
- Always persist `TRACE` level logs to a file
- Meta.instrument & Instrumentor API
- Downloadable VSCode extension
- New `project/status` route for reporting LS state
- Add Enso-specific assertions
- Modules can be `private`
- HTTPS and WSS support in Language Server
- Export of non-existing symbols results in error
- Upgrade GraalVM to 23.1.0 JDK21
- Added opt-in type checks of return type
- Introduce Arrow language
- DataflowError.withoutTrace doesn't store stacktrace
- Derive --in-project from --run source location
- Binary operator resolution based on that value
- Add run_google_report method
- Execute and debug individual Enso files in VSCode extension
- Check type of `self` when calling a method using the static syntax
- Autoscoped constructors
- Allow Oracle GraalVM JDK
1、 assets.json 1.63KB
2、 enso-bundle-2024.1.1-nightly.2024.4.14-linux-amd64.tar.gz 832.24MB
3、 enso-bundle-2024.1.1-nightly.2024.4.14-macos-aarch64.tar.gz 836.77MB
4、 enso-bundle-2024.1.1-nightly.2024.4.14-macos-amd64.tar.gz 824.76MB
5、 enso-bundle-2024.1.1-nightly.2024.4.14-windows-amd64.zip 831.39MB
6、 enso-engine-2024.1.1-nightly.2024.4.14-linux-amd64.tar.gz 537.49MB
7、 enso-engine-2024.1.1-nightly.2024.4.14-macos-aarch64.tar.gz 536.96MB
8、 enso-engine-2024.1.1-nightly.2024.4.14-macos-amd64.tar.gz 536.97MB
9、 enso-engine-2024.1.1-nightly.2024.4.14-windows-amd64.zip 535.29MB
10、 enso-launcher-2024.1.1-nightly.2024.4.14-linux-amd64.tar.gz 19.38MB
11、 enso-launcher-2024.1.1-nightly.2024.4.14-macos-aarch64.tar.gz 18.92MB
12、 enso-launcher-2024.1.1-nightly.2024.4.14-macos-amd64.tar.gz 19.07MB
13、 enso-launcher-2024.1.1-nightly.2024.4.14-windows-amd64.zip 18.82MB
14、 enso-linux-x86_64-2024.1.1-nightly.2024.4.14.AppImage 985.28MB
15、 enso-linux-x86_64-2024.1.1-nightly.2024.4.14.sha256 64B
16、 enso-mac-arm64-2024.1.1-nightly.2024.4.14.dmg 980.42MB
17、 enso-mac-arm64-2024.1.1-nightly.2024.4.14.sha256 64B
18、 enso-mac-x64-2024.1.1-nightly.2024.4.14.dmg 975.06MB
19、 enso-mac-x64-2024.1.1-nightly.2024.4.14.sha256 64B
20、 enso-project-manager-2024.1.1-nightly.2024.4.14-linux-amd64.tar.gz 69.45MB
21、 enso-project-manager-2024.1.1-nightly.2024.4.14-macos-aarch64.tar.gz 68.32MB
22、 enso-project-manager-2024.1.1-nightly.2024.4.14-macos-amd64.tar.gz 69.02MB
23、 enso-project-manager-2024.1.1-nightly.2024.4.14-windows-amd64.zip 67.36MB
24、 enso-win-x64-2024.1.1-nightly.2024.4.14.exe 833.83MB
25、 enso-win-x64-2024.1.1-nightly.2024.4.14.sha256 64B
26、 launcher-manifest.yaml 101B
27、 manifest.yaml 239B
28、 project-manager-bundle-2024.1.1-nightly.2024.4.14-linux-amd64.tar.gz 882.31MB
29、 project-manager-bundle-2024.1.1-nightly.2024.4.14-macos-aarch64.tar.gz 886.16MB
30、 project-manager-bundle-2024.1.1-nightly.2024.4.14-macos-amd64.tar.gz 874.69MB
31、 project-manager-bundle-2024.1.1-nightly.2024.4.14-windows-amd64.zip 879.94MB