Revision history for Rinci
1.1.37 2013-09-13 (SHARYANTO)
- result: Replace 'error_stack' with 'prev'.
1.1.36 2013-09-07 (SHARYANTO)
- Rename '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'.