Roadmap
Learning and adoption
- docs: document simple state machine and how to use
mkunionfor it - feature:
mkunion watch ./...command that watches for changes in files and runs faster thango generate ./... - feature:
go:tag mkmatchto generate pattern matching functions - feature:
go:tag mkmatchwith better type parameters validation - docs: document how to write custom pattern matching functions
- docs: document other packages in
x/directory - docs: document typescript types generation and end-to-end typs concepts (from backend to frontend)
- feature: expose functions to extract
go:tagmetadata - docs: describe philosophy of "data as resource" and how it translates to some of library concepts
- feature: remove need to provide name for
//go:tag mkmatch:"<name>"and allow to have only//go:tag mkmatch - feature: allow to specify type param name in
go:tag mkunion:"Tree[A]"with validation of expected number and name of type parameters - bug fix: prevent dot imports adding same type into registry but in different place and causing panic
- docs: describe that go:tag can be used on package level
- feature:
mkunion cleanremoves all generated files to have clean state for generation
Long tern experiments and prototypes
- experiment: generate other (de)serialization formats (e.g. grpc, sql, graphql)
- prototype: http & gRPC client for end-to-end types.
- experiment: allow to derive behaviour for types, like derive(Map), would generated union type with Map() method
- experiment: consider adding explicit discriminator type names like
example.Branch[int]instead ofexample.Branch. This may complicate TypeScript codegen but it could increase end-to-end type safety. - refactor:
x/storageinstead of generic, leverage schema information to remove lookup of schemas (overhead), eventually generate storage code