Revision history for Rinci 1.1.44 2014-04-27 (SHARYANTO) - Add Sah::Schema::Rinci (replaces Rinci::Schema). [REMOVED FEATURES] - function: Remove argument spec's 'cmdline_on_getarg' (for now?) because the current implementation does not allow calling the hook on a per-encountered basis (the argv is remainder from Getopt::Long after all the options have been processed). 1.1.43 2013-12-25 (SHARYANTO) - Ho ho ho! - function: Add argument spec's 'cmdline_on_getopt' and 'cmdline_on_getarg'. 1.1.42 2013-11-14 (SHARYANTO) - function: Add argument spec's 'delete' and 'element_completion' properties. 1.1.41 2013-11-08 (SHARYANTO) - function: Introduce value 'file' for argument spec property 'cmdline_src', to allow function to get file content in its argument. - function: Introduce property 'test' on example spec, to allow test module to skip testing a certain examples. 1.1.40 2013-10-28 (SHARYANTO) - result: Add properties 'func.*'. 1.1.39 2013-10-15 (SHARYANTO) - with the smell of burning goat meat in the house! - function: examples: Introduce 'src' and 'src_plang' so that more general examples can be specified. - function: cmdline_aliases: 'code' now gets (\%args, $val) instead of just (\%args). 1.1.38 2013-09-15 (SHARYANTO) - result: Add property 'logs'. 1.1.37 2013-09-13 (SHARYANTO) - result: Replace property 'error_stack' with 'prev'. 1.1.36 2013-09-07 (SHARYANTO) - Rename property 'entity_version' to 'entity_v' to be more consistent with DefHash ('defhash_v'). 1.1.35 2013-04-11 (SHARYANTO) - Introduce property 'x' (from DefHash 1.0.3). 1.1.34 2012-11-07 (SHARYANTO) - function: Introduce status 44x and 54x (experimental). 1.1.33 2012-11-07 (SHARYANTO) - No spec changes. (Temporarily?) split Rinci::Schema to its own dist so I can release them often separately. 1.1.32 2012-11-01 (SHARYANTO) - result: Add property 'error_stack'. - function: property 'result': Add key 'statuses'. 1.1.31 2012-09-19 (SHARYANTO) - Base specification on DefHash. - Remove 'text_markup' property. Will depend on DefHash for this. 1.1.30 2012-09-07 (SHARYANTO) - No spec changes. Rename back a file (Rinci/Schema.pm) that I thought was not used (me--). [CT] 1.1.29 2012-09-04 (SHARYANTO) - Transaction: In 'check_state' phase, specify that result message should contain a description of what needs to be fixed, or how it is already fixed, or how it is unfixable; the message can then be logged by TM to be displayed to user. 1.1.28 2012-08-29 (SHARYANTO) [INCOMPATIBLE CHANGE] - Transaction: To link between 'check_state' call and 'fix_state' call (e.g. function want to preserve some value between call), previously in 'fix_state' call TM passes '-tx_undo_actions' containing the undo actions from the 'check_state'. Now a simpler way is introduced to replace this: '-tx_action_id' containing a unique UUID (in 32-character hexdigit). BTW, '-tx_undo_actions' has not been implemented in Perinci::Tx::Manager, so the next release of Perinci::Tx::Manager will just implement '-tx_action_id'. 1.1.27 2012-08-28 (SHARYANTO) - Introduce status code 331. - Mark which status codes are in HTTP spec, which are introduced by us. 1.1.26 2012-08-22 (SHARYANTO) - Term change: call -> action. 1.1.25 2012-08-22 (SHARYANTO) [INCOMPATIBLE CHANGES] - Remove properties 'use' and 'req' in 'tx' feature. This is to make things simpler. use=>1 is redundant, if function follows transaction protocol it means you can use it in transaction. req=>1 is also removed, all functions should just require transaction and potentially return 'do_actions'. A simple wrapper can be created to execute those actions without transaction, if wanted. 1.1.24 2012-08-21 (SHARYANTO) [INCOMPATIBLE CHANGES] - Deprecate undo protocol, now undo should be implemented solely using transaction. - Revise transaction specification. Introduce protocol version (v) and bump it to v=2. Require 'tx' feature to specify protocol version. Incompatibilities include: 1) transaction now no longer uses undo protocol but adapts mechanism from Perinci::Sub::Gen::Undoable (which will also be deprecated as the mechanism is now elevated into standards); 2) TM object no longer needs to be passed to function, this should be safer; function now detects transaction using '-tx_action' special argument. [ENHANCEMENTS] - Specify TM's interface in more details (moved from Riap::Transaction, which now becomes shorter). - Specify steps for action, rollback, and crash recovery in more details, with example. 1.1.23 2012-08-14 (SHARYANTO) - Major rewrite of transaction specification. The main motivation is to remove the concept of 'steps' as this is a false dichotomy. Steps are actually functions themselves, the units of work are still functions. Eventually, a complex system will need to nest functions inside functions, to more than two levels of nesting. Why divide and limit into two levels (function-step)? So: - Everything is a bit clearer now - $tm interface is saner ($tm->call, easier to call function inside another) - No more mention of unused transaction status: e - New transaction statuses: v (rollback of undoing process), e (rollback of redoing process). - Recovery does not always means rollback (to R). For transactions in u and d status, we continue the undoing/redoing. For transactions in v and e status, we continue the rollback to final status C and U, respectively. 1.1.22 2012-08-09 (SHARYANTO) - tx: Describe the ordering of calls during undo/rollback/redo when there is nested call. The same function may be called twice or more with parts of undo/redo steps. - tx: In transaction mode, function now gets undo/redo data from the usual -undo_data special argument, like in non-transaction mode. Txm's API get_undo_steps() and get_redo_steps() are now removed. 1.1.21 2012-07-23 (SHARYANTO) [INCOMPATIBLE CHANGES] - function: Remove argument specification key 'src', use 'cmdline_src' instead. I think 'src' is too general. 1.1.20 2012-07-21 (SHARYANTO) - function: Add argument specification keys 'src' and 'cmdline_src'. 1.1.19 2012-06-22 (SHARYANTO) - Adjust transaction status labels. Final statuses are now in uppercase: C, R, U, X; while transient statuses are in lowercase: i, a, u, d, e. - Add response status 429 (too many requests). 1.1.18 2012-06-06 (SHARYANTO) - Refinements to transaction details. - Remove dependency clause 'undo_storage'. Add dependency clauses 'tmp_dir', 'trash_dir', 'undo_trash_dir'. 1.1.17 2012-05-31 (SHARYANTO) - Specify transactional system (Rinci::function::Transaction). Split specification for undo to Rinci::function::Undo and specify undo/redo protocol under transaction. 1.1.16 2012-05-03 (SHARYANTO) - Refine undo protocol documentation. Specify interaction with undo/transaction manager. '-undo_hint' is now replaced by '-undo_storage'. Declare 'undo_storage' dependency clause. 1.1.15 2012-05-02 (SHARYANTO) - No spec changes. [INCOMPATIBLE CHANGE] - Update Sah schema syntax (pre-0.03, [merge:X] -> [mergeX]) 1.1.14 2012-05-02 (SHARYANTO) [INCOMPATIBLE CHANGE] - Change 'exec' dependency clause to 'prog' (avoid possible confusion because 'exec' can imply that we need to execute the program; there can be other future dep clause for that). 1.1.13 2012-03-23 (SHARYANTO) [ENHANCEMENTS] - Each tag in 'tags' property can also be a tag metadata hash (for translatable message, etc). 1.1.12 2012-03-13 (SHARYANTO) [ENHANCEMENTS] - Add 'Rinci::result'. 1.1.11 2012-03-13 (SHARYANTO) [INCOMPATIBLE CHANGES] - package: Remove property 'pkg_version' (use 'entity_version' instead). [ENHANCEMENTS] - Add property 'entity_version'. 1.1.10 2012-02-28 (SHARYANTO) - function: arg spec 'aliases': Add alias spec 'schema' 1.1.9 2012-02-28 (SHARYANTO) [INCOMPATIBLE CHANGE] - function: Change (back) 'set' alias spec to 'code', in arg spec 'aliases' (for backward compatibility with 1.0) 1.1.8 2012-02-28 (SHARYANTO) [INCOMPATIBLE CHANGES] - function: Replace (back) 'alias_for' argument spec with 'cmdline_aliases'. I first used 'alias_for' so I can list each alias as a key in 'args' property. The goal is so I can get all argument names (- aliases) simply by doing a keys() on 'args' hash. And the goal of that is to add a 'complete_arg_name' Riap action which is more lightweight than a full 'meta' just to get argument names. Turns out that I don't need 'alias_for' just to support 'complete_arg_name', and also turns out that completing argument name needs more than just all argument names - aliases. You also need 'pos' information. So a full 'meta' is currently used. The reason I now revert to 'cmdline_aliases' style is because I don't want command-line aliases to become full/first-class argument. 1.1.7 2012-02-23 (SHARYANTO) - package: Add property 'pkg_version'. 1.1.6 2012-02-21 (SHARYANTO) - function: Add 'alias_for' argument specification. 1.1.5 2012-02-10 (SHARYANTO) - No spec changes. - Add Rinci::Schema. 1.1.4 2012-02-01 (SHARYANTO) - Declare that 1.1 series might introduce minor backward compatibility problems between revisions. - Rename 'arg_pass_style' and 'result_envelope' to the old (Sub::Spec-era) 'args_as' and 'result_naked'. New names are not better. - Code entity URI now moved to Riap specification as the 'riap' URI scheme. - Some minor revisions. 1.1.3 2012-01-27 (SHARYANTO) - Change syntax of code entity URI, from 'Pkg.SubPkg.func' to 'pm:/Pkg/SubPkg/func' (or 'py:', 'php:', and so on). - Some minor revisions like wording and paragraph reorganization. 1.1.2 2012-01-19 (SHARYANTO) - Add 'default_lang' property. Add guidelines on what to put in 'summary' and 'description'. - variable: Add 'schema' property. 1.1.1 2012-01-18 (SHARYANTO) - No spec changes. Update module names (Rinci::HTTP -> Riap, Rias -> Perinci). Add documents Rinci::Upgrading and Rinci::Tutorial (stub). 1.1.0 2012-01-15 (SHARYANTO) - First release. Spun off from Sub::Spec. [INCOMPATIBLE CHANGES FROM Sub::Spec 1.0.x] - Terminology: 'spec clause' becomes 'property'. This is to avoid confusion with 'clause' as used in Sah schema language. - Default text markup format changed from Org to Markdown, but a new properties 'text_markup' is added to allow specifying 'org' or 'markdown' (or 'none'). - 'v' clause is now required to declare Rinci spec version (with value 1.1, if unspecified then assumed spec is old Sub::Spec 1.0). - function: Incompatible changes to 'args' and 'result' properties; 'args' is now a hash of arg names and arg *specs* (instead of arg schemas). 'result' is now a hash of data, instead of schema. The purpose is to keep Sah schema clean from custom, non-schema-related schema clauses, like arg_* (thus requiring custom Sah extensions, etc). Mixing them into schemas was not the right way. - function: property 'type' removed, replaced with 'is_func', 'is_meth', 'is_static_meth'. This is because a single subroutine/function can act as all. - function: Other properties which are also removed/replaced: 'timeout' (non-core), 'retry' (non-core), 'scope' (can be replaced by using tags), 'result_naked' (replaced by 'result_envelope'), 'args_as' (replaced by 'arg_pass_style'). - function: property 'deps': terminology change ('dep clause' -> 'dep type'), rename dep types: 'sub' -> 'func', 'mod' -> 'perl_module'. [NEW FEATURES FROM Sub::Spec 1.0.x] - Keys beginning with "_" are allowed and ignored. This can be used to store extra information. - New properties: 'tags', 'links', 'examples'.