feat: improve performance and type-safety #83
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This may seem like a mundane merge request, but it delivers significant performance improvements. Benchmarks show that this library now outperforms jsonld.js.
Note: While the changes may appear straightforward, caution is required when implementing them. It is sometimes necessary to differentiate between a value explicitly set to
null
in the context and one that is simply absent.PS: I don't have any other changes lined up (I couldn't submit this PR earlier because it builds upon #82 to avoid merge conflicts).
Details:
Basic example
No change in behavior.
Motivation
Performance! Additionally, the struct-based design enhances code navigation/reasoning (especially when using an LSP).
Checks
make test