-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: logic blocks v5 (serialization, optional diagram generation, boxless input queing, allocation-free hot path, type registry, etc) #34
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…nt for entrance/exit, etc
feat: prevent boxing inputs and outputs in bindings altogether fix: pass inputs and outputs by reference everywhere feat: do not box inputs or outputs in bindings feat: do not box inputs or outputs when listened to directly refactor: rename generics for clarity refactor: remove unneeded code refactor: consolidate fake context refactor: eliminate all dynamic types in codebase
…propagate logic block exceptions, add force reset capability, update tests
…ation generator, revert error handling to always pass through HandleError and not throw by default
6ddcfd8
to
3cb8af1
Compare
…rnings, extract blackboard implementation
… cached introspection, allow fake contexts to spin up states as needed for testing, allow non-serializable but introspective logic blocks, rename attribute to just meta, fix nameof() usage for identifiers.
…n, stj interop, and fixes
…enerated code, improve partial and top-level checking in the type generator, diagram generation
…trospective types
9a5b79c
to
09fa3c5
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
this.OnEnter((State? previous) => ...)
instead ofOnEnter<StateType>((previous) => )
. There's also overloads that don't require you accept the previous/next state if you don't need it (99% of use cases).[StateMachine]
is now[LogicBlock(typeof(ConcreteState), Diagram = true)]
.[LogicBlock]
attribute.Use
selector binding that I never actually used in practice. If you were using it, sorry! I needed to eliminate the dependency onMicrosoft.CSharp
, and the features it was using withdynamic
required that package. From what I learned, those bindings wouldn't be AOT-friendly, and all Chickensoft packages need to be AOT-friendly.in
[Meta]
attribute.init
properties on serializable types, includingrequired
properties.Testing
Documentation
Deployment