Skip to content

Instantly share code, notes, and snippets.

@japhb
Created November 29, 2012 20:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save japhb/4171575 to your computer and use it in GitHub Desktop.
Save japhb/4171575 to your computer and use it in GitHub Desktop.
Notes on Perl6 module system designs pros and cons
* root/Module/Name/auth/ver.pm + root/Module/Name/Any/Any.pm + root/Module/Name/auth/ver/id.pm + manifest
+ Handles individual modules well
+ Handles broken filesystems
+ Handles auth and ver queries usually in FS, sometimes in manifest
+ Only parses manifests when needed
+ Does not handle PATH at all
+ Does not handle non-lib files
+ Does not handle non-installed files
+ Does not handle binding versioned files together (though to be fair S11 is weak at this too)
* root/auth/package/ver/{bin,lib,share,...} + manifest
+ Handles broken filesystems
+ Handles non-lib files well
+ Handles bound versioned files well
+ Handles auth and ver queries in manifest always
+ Requires always parsing manifests
+ Does not handle PATH well
+ Does not handle non-installed files
* root/{bin,lib,share}/... ("alternatives" symlinks) -> root/auth/package/ver/{bin,lib,share,...} + manifest
+ Handles broken filesystems
+ Handles PATH well
+ Handles non-lib files well
+ Handles bound versioned files
+ Handles auth and ver queries in manifest always
+ Fast path for Any/Any queries, but otherwise manifest always
+ May be possible to consider non-installed files to be a special case of not having version info
+ Makes module install system rather heavy weight; lots of complexity
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment