enso/tools
Hubert Plociniczak c54c3b7e9d
Eliminate circe-yaml dependency (#10326)
* Eliminating circe-yaml

This change adds our very-own YAML parser on top of SnakeYAML. Compared
to Circe parser on top of SnakeYAML. The advantage? In some not-so-distant
future we might actually get rid of circe and the related performance
issues.

The logic is similar to what circe does i.e. analyzing SnakeYAML to
build our own structure.
This change is not complete, as there are still some tests failing, but
most common Configs are already parseable.
We _could_ auto-generate some of the code but still some of the logic
would have to be tweaked by hand; the current logic has a number of
special cases, as I found out the hard way.

* wip: more tests passing

* Fix remaining tests in ConfigSpec

* Fixing YAML decoder for editions

Dropping circe as a decoder for Editions revealed some problems. Turns
out the current implementation had even more special cases to deal with.

* nit

* Allow for empty exports

* Mostly complete encodin part

Replaced almost all `toYAML` locations with SnakeYAML equivalent.
The encoding has to use Java collections for which there exists a
built-in support. If we were to use Scala collections we would have to
deal with tagging, at the very least.

* Remove the last remaining Circe's YAML parser

* Bug fix + further loop optimization

* removal of some dependencies

* Remove circe-yaml

Added a custom SnakeYAML Node updater to mimick the JSON -> YAML -> JSON
conversion needed for updating fields. The algorithm recursively follows
the key-path and inserts the desired Node. This is not a performance
oriented code on purpose.

* Fix compilation issues

`circe-core` was marked as `provided` but no one eventually included it
in the final jar, hence `NoClassFoundException`.

* fix licensing

* Removing obsolete circe definitions

* fmt

* nits

* s/SnakeYamlDecoder/YamlDecoder

* fmt

* Partial revert, PM needs JSON decoders/encoders

* style

* incremental compilation gone wrong
2024-07-05 09:32:45 +02:00
..
build-performance Faster dev builds; tooling for measuring build times and app performance. (#3491) 2022-06-02 19:24:18 +00:00
ci Expose Ydoc port in Docker container (#10210) 2024-06-07 13:51:06 +00:00
enso4igv Enso language support with parser in VSCode, IGV, etc. (#7054) 2024-06-14 14:01:37 +00:00
graphmod Add a markdown style guide (#1022) 2020-07-21 13:59:40 +01:00
http-test-helper Prepare for the Path resolver change to GET (#9958) 2024-05-15 13:00:32 +00:00
language-server Bump clap to v4 (#9595) 2024-04-03 11:32:03 +00:00
legal-review Eliminate circe-yaml dependency (#10326) 2024-07-05 09:32:45 +02:00
legal-review-helper Followup improvements to the license review tool (#9895) 2024-05-11 07:51:11 +00:00
native-image-config-cleanup Apply unified prettier style to engine codebase (#3145) 2021-11-08 16:45:29 +01:00
performance Bump Jinja2 (#9867) 2024-06-25 13:42:24 +02:00
simple-library-server Bump express from 4.17.3 to 4.19.2 in /tools/simple-library-server (#9555) 2024-06-20 08:39:07 +00:00
README.md Add a markdown style guide (#1022) 2020-07-21 13:59:40 +01:00

Enso Tools

This folder contains various tools and utilities that aid in the development of the Enso programming language. It should not be used as a dumping ground for things that have better places, but instead is used to hold things that should be part of this repository but do not have another sensible place for them.