This repository has been archived by the owner on Oct 1, 2023. It is now read-only.
v1.0.0
v1.0 is mainly a technical overhaul to bring the project to a steady state. Going from v0 to v1 also means our subject is no longer experimental!
Feature changes
All this refactoring also unlocks potentials previously chained by short-sighted designs.
- Support structs/unions with uncapitalized names (inc. anonymous structs/unions)
- Support typedef-structs/unions (’twas broken in a dozen places in v0)
- Support nested struct/union
- Module builder pattern
Before = FFI::UCtags.call … class Before ANSWER = 42 end After = FFI::UCtags.call … do self::ANSWER = 42 end
More impactful feature improvements will come in the next minor update or two.
Technical changes
It looks like the whole thing has been rewritten from scratch! Although only the code structure is. The commit logs have the details; in summary:
- What was previously the instance level is now together with the class level – including the namespace attribute.
- The new instance level supersedes the experimental
Builder
helper. - The constant fetching mechanism is now functional rather than inherited.
- The case block of the main function is now split into its own function plus a couple of subroutines.
- A new mechanism for struct/unions supports and enhances typedef-structs/unions.
- The member queue is now a proc-array pair rather than a clunky trio of arrays.
- That queue mentioned by the previous bullet point is now multi-levelled to enable building inner structs/unions.
- And last but not least – added more code comments and more logging, plus
README.md
and Yardoc updates.
Moreöver, now that v1 has laid some reliable groundwork, to-do items will be GitHub issues rather than dumped on a hard-to-find page, and I too will use a branch-merge workflow.