Road to 1.0.0 - Policies and better loaders #448
stefan-gorules
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Hi everyone 👋 ,
We've been working on a major milestone in the background and will be rolling out a version
1.0.0-betawithin the following week. After a lot of experimentation and effort, we have landed on a new concept for managing the business logic called Policies. During the research process, we've gained a clearer understanding of what perfect editing experience looks like. Our focus over the next couple of months will be to deliver on that better experience through static analysis and catching mistakes before they happen in the runtime.With the policies, this feature comes out of the box. Graphs will remain central to our experience and will receive a revamped experience that includes many great things we've learned while building policies (static types, refactoring, dependency tracking, etc.) without any breaking changes.
Policies - Documents with Rules
Policies are a new way of declaring the rules. The first and most noticeable difference compared to the graphs is how they are represented visually. Instead of creating the nodes and connecting the edges, you can write a document that contains both rules and documentation. The rules are automatically ordered and prepared for execution through backtracking layer by detecting dependencies of each rule block.
They also come with great tools:
Policy definition
Inspecting evaluation (answering "Why?")
Loaders - Simplifying Developer Experience
We're adding a couple of new options for the loaders to simplify usage of
.zipreleases and statically available rules. Particularly:For example, the API for NodeJS might look something like:
Forbidding
unsafein coreWith the release of
1.0.0-betawe will also be hardening the core by removing anyunsafeentries. Unsafe might still have its place inside ofbindingswhere more control between different layers (e.g. napi-rs) is needed, but our goal is to try not to useunsafewithin the core Rust packages in the future, unless a very specific reason arises.What
betameans in this caseWe expect the beta line to run for a couple of months. We're want to ensure API contract stability rather than racing to
1.0.0. The features are expected the work on every beta release, but the API might get breaking changes between versions as we converge towards design goal.The business logic will remain 100% reverse compatible and functional, although the API surface and wiring might change.
Beta Was this translation helpful? Give feedback.
All reactions