Architecture #18879
closedTest zio-json in place of lift-json
Description
We want to have a path out of lift-json for the following reasons:
- lift-json is slow, which is becoming a blocker for some parts (like expected reports / compliance in postgres)
- lift-json comes with 10Mo of dependencies that are not used anywhere else,
- lift-json is not maintained anymore (at all).
We have already tested circe in some other projects (like CVE) and we found that:
- it's a bit hard to use / understand,
- performance are deceptive in memory consumption (the speed was much better then lift-json)
- compilation time exploses,
- the chan/community was not very supportive.
We want to try zio-json which is extremelly alike circe on most part (similar - so hard - to use, mapping to business objects, etc) but it makes things better on several point:
- compilation time is extremelly good,
- performance are the best on available json framework for scala - including for memory consumption,
- its implementation is order of magnitude simpler (the lexer is the most complexed part, but it's not very interesting, and appart from that, it's a couple hundred lines of code) and so, it's possible to just look and undertand what is happening and twick it
- the chan was very helpful and friendly (but it's perhaps because that project is quite new).
But there is also risks:
- the project is extremelly young (even if tests are extensive, may have bug ; not so many users ; etc)
- there is no intermediate AST, which is disturbing,
So, the idea is to port one API (for example Rule) to see from end to end what it can be to use zio-json, check that there is no blockers, check if it makes things simpler or not, the quantity of work to do, etc. Plus, having zio-json in the code with a full, not toy example, would make it much simpler to use/repeat iteratively.
Updated by François ARMAND almost 4 years ago
- Status changed from New to In progress
Updated by François ARMAND almost 4 years ago
- Status changed from In progress to Pending technical review
- Assignee changed from François ARMAND to Vincent MEMBRÉ
- Pull Request set to https://github.com/Normation/rudder/pull/3494
Updated by Vincent MEMBRÉ over 3 years ago
- Assignee changed from Vincent MEMBRÉ to François ARMAND
Updated by François ARMAND over 3 years ago
- Status changed from Pending technical review to Pending release
Applied in changeset rudder|5540953ca1109bdc5b70fa026c9936a298f19056.
Updated by Vincent MEMBRÉ about 3 years ago
- Status changed from Pending release to Released
This bug has been fixed in Rudder 7.0.0~beta1 which was released today.
Updated by Clark ANDRIANASOLO about 1 year ago
- Related to Architecture #23677: Migrate to zio-json added