30 lines
1017 B
Markdown
30 lines
1017 B
Markdown
|
# Actors
|
||
|
|
||
|
This package contains shims for abstracting over different actor versions.
|
||
|
|
||
|
## Design
|
||
|
|
||
|
Shims in this package follow a few common design principles.
|
||
|
|
||
|
### Structure Agnostic
|
||
|
|
||
|
Shims interfaces defined in this package should (ideally) not change even if the
|
||
|
structure of the underlying data changes. For example:
|
||
|
|
||
|
* All shims store an internal "store" object. That way, state can be moved into
|
||
|
a separate object without needing to add a store to the function signature.
|
||
|
* All functions must return an error, even if unused for now.
|
||
|
|
||
|
### Minimal
|
||
|
|
||
|
These interfaces should be expanded only as necessary to reduce maintenance burden.
|
||
|
|
||
|
### Queries, not field assessors.
|
||
|
|
||
|
When possible, functions should query the state instead of simply acting as
|
||
|
field assessors. These queries are more likely to remain stable across
|
||
|
specs-actor upgrades than specific state fields.
|
||
|
|
||
|
Note: there is a trade-off here. Avoid implementing _complicated_ query logic
|
||
|
inside these shims, as it will need to be replicated in every shim.
|