Skip to content
This repository has been archived by the owner on Oct 1, 2023. It is now read-only.

v1.0.0

Compare
Choose a tag to compare
@ParadoxV5 ParadoxV5 released this 01 Jun 03:41
4bfc59d

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.