[Subversion] / PEAK-Rules / DESIGN.txt  

Log of /PEAK-Rules/DESIGN.txt

Parent Directory

No default branch
Bookmark a link to HEAD: (view) (download)


Revision 2772 - (view) (download) - [select for diffs]
Modified Thu Apr 9 20:20:48 2015 UTC (9 years ago) by pje
File length: 34509 byte(s)
Diff to previous 2764
Fix some 3.3+ shallow failures

Revision 2764 - (view) (download) - [select for diffs]
Modified Thu Apr 9 17:01:55 2015 UTC (9 years ago) by pje
File length: 34513 byte(s)
Diff to previous 2762
Fix various shallow test failures on 3.x

Revision 2762 - (view) (download) - [select for diffs]
Modified Thu Apr 9 16:02:39 2015 UTC (9 years ago) by pje
File length: 34418 byte(s)
Diff to previous 2735
Unify exception reprs across 2.x and 3.x so tests work

Revision 2735 - (view) (download) - [select for diffs]
Modified Sat Apr 4 02:06:14 2015 UTC (9 years ago) by pje
File length: 34396 byte(s)
Diff to previous 2699
Python 3 test compatibility

Revision 2699 - (view) (download) - [select for diffs]
Modified Wed Aug 31 23:07:53 2011 UTC (12 years, 7 months ago) by pje
File length: 34362 byte(s)
Diff to previous 2681
Allow registering methods for generic functions that aren't imported yet

Revision 2681 - (view) (download) - [select for diffs]
Modified Thu Aug 19 20:02:05 2010 UTC (13 years, 8 months ago) by pje
File length: 32733 byte(s)
Diff to previous 2667
Fix a problem with ambiguity between (aType,) and (istype(aType),) in 
TypeEngine functions, and add an error message when you define circular 
method precedence rules.

Revision 2667 - (view) (download) - [select for diffs]
Modified Sun Aug 15 16:08:14 2010 UTC (13 years, 8 months ago) by pje
File length: 30261 byte(s)
Diff to previous 2663
Rename 'precedence' attribute to 'serial', since that's really what it 
is, i.e., a definition order.  While it's true that you *could* try to 
use it for an explicit precedence, it'd be tough to do sanely.  
Therefore, it's better to have it be clear what this actually is at
the moment, and avoid confusion with all the other aspects of 
"precedence" (like implication and method-override order).

Revision 2663 - (view) (download) - [select for diffs]
Modified Sun Aug 15 14:15:29 2010 UTC (13 years, 8 months ago) by pje
File length: 30241 byte(s)
Diff to previous 2661
Implement 'value()' convenience API for defining methods that just 
return a constant value.  Add memoizing to engine.apply_template, so 
that we don't create a crapload of function objects for identical 
method combinations.

Revision 2661 - (view) (download) - [select for diffs]
Modified Thu Aug 12 16:25:57 2010 UTC (13 years, 8 months ago) by pje
File length: 29612 byte(s)
Diff to previous 2660
Overhaul method compilation: renamed optimized() to compiled() and made 
__call__ optional.  Support template-compiled methods.  Moved method 
combination docs to "user manual" (such as it is) and simplified the 
custom combination example.  Method invocation overhead should now be 
at an absolute minimum, with only a single overhead layer for before, 
after, and default-combination methods (and zero for around and standard 
methods), and no *arg/**kw overhead at call time.

Revision 2660 - (view) (download) - [select for diffs]
Modified Thu Aug 12 12:42:54 2010 UTC (13 years, 8 months ago) by pje
File length: 29860 byte(s)
Diff to previous 2659
Begin separating API from core, so that peak.rules main module contains
only stuff you need for *using* GF's, not extending/customizing, and
core only contains stuff that's mutually interdependent w/other core
stuff.  Change imports in doctests to reflect intended usage.

Revision 2659 - (view) (download) - [select for diffs]
Modified Thu Aug 12 02:17:47 2010 UTC (13 years, 8 months ago) by pje
File length: 29779 byte(s)
Diff to previous 2658
Fix typo

Revision 2658 - (view) (download) - [select for diffs]
Modified Thu Aug 12 02:16:33 2010 UTC (13 years, 8 months ago) by pje
File length: 29783 byte(s)
Diff to previous 2657
Support before/after/around methods in conjunction with custom 
combinations.

Revision 2657 - (view) (download) - [select for diffs]
Modified Thu Aug 12 02:05:50 2010 UTC (13 years, 8 months ago) by pje
File length: 29086 byte(s)
Diff to previous 2655
Arbitrary method combinations made easy!  You can now trivially emulate
most of CLOS's standard method combinations (e.g. @combine_using(sum) 
emulates CLOS's "+" combination.)

Revision 2655 - (view) (download) - [select for diffs]
Modified Wed Aug 11 23:23:00 2010 UTC (13 years, 8 months ago) by pje
File length: 26956 byte(s)
Diff to previous 2649
Method compilation - remove some of the function calling overhead for
methods, by preprocessing.  See DESIGN.txt for docs.

Revision 2649 - (view) (download) - [select for diffs]
Modified Tue Aug 10 22:44:26 2010 UTC (13 years, 8 months ago) by pje
File length: 23554 byte(s)
Diff to previous 2500
Wiki cleanups

Revision 2500 - (view) (download) - [select for diffs]
Modified Thu Feb 28 15:24:24 2008 UTC (16 years, 1 month ago) by pje
File length: 23264 byte(s)
Diff to previous 2489
Fixed 'after' methods discarding main function return value
(reported by Sergey Schetinin)

Revision 2489 - (view) (download) - [select for diffs]
Modified Thu Jan 17 03:33:36 2008 UTC (16 years, 3 months ago) by pje
File length: 23221 byte(s)
Diff to previous 2488
Determine sequence (and therefore definition precedence) at
rule *parsing* time, rather than rule *addition* time.  This
ensures that lexical order holds within class bodies, and
also prevents confusion when a ruleset is populated using
data from other rulesets.  (i.e. rulesets no longer generate
sequence numbers.)  Also, created a ParseContext struct to
simplify the signature of the unwieldy parse_rule() function.

Revision 2488 - (view) (download) - [select for diffs]
Modified Thu Jan 17 02:57:37 2008 UTC (16 years, 3 months ago) by pje
File length: 23192 byte(s)
Diff to previous 2446
Consolidate Rule and ActionDef types, making it easier
to link rulesets.

Revision 2446 - (view) (download) - [select for diffs]
Modified Sat Dec 22 21:40:19 2007 UTC (16 years, 4 months ago) by pje
File length: 23209 byte(s)
Diff to previous 2315
Design doc cleanups

Revision 2315 - (view) (download) - [select for diffs]
Modified Sun Jun 24 18:57:34 2007 UTC (16 years, 10 months ago) by pje
File length: 24056 byte(s)
Diff to previous 2313
Improve the robustness of the core bootstrapping process, and flesh out
the ``Engine`` abstract base class a bit.  RuleSets now generate actions
using ``disjunct()``, so they should work with the predicate system now.
``overrides()`` for methods is now distinct from ``implies()``, as that
lowers the self-referentiality complexity just a bit.  :)  Also, it
paves the way to creating a less error-prone way of haing inter-
methodtype priorities (e.g. Around vs. Before/After, etc.).

Revision 2313 - (view) (download) - [select for diffs]
Modified Sun Jun 24 02:05:15 2007 UTC (16 years, 10 months ago) by pje
File length: 24039 byte(s)
Diff to previous 2310
PEAK-Rules is now as "smart" as RuleDispatch, in that it now
"knows" as much as RuleDispatch does about logical conditions
regarding Python objects, and how to index them efficiently.
The machinery is also better documented (and probably better
tested) than the equivalent bits of RuleDispatch.

Alas, this does not mean that you can actually use Python
expressions for generic function criteria yet, as the actual
tree builder/interpreter hasn't been written.  So we can
evaluate and index expressions, but not build them from an AST
or build/run a dispatch tree from the indexes.  Still, it's
getting *really* close now!

Revision 2310 - (view) (download) - [select for diffs]
Modified Thu Jun 21 03:16:13 2007 UTC (16 years, 10 months ago) by pje
File length: 24345 byte(s)
Diff to previous 2309
Implement indexing for is/not and </>/==/!= conditions, and general
bitmap-based index facility.  (Still needs class indexing to achieve
parity with the comparable parts of RuleDispatch, but it's getting
close.)

Revision 2309 - (view) (download) - [select for diffs]
Modified Wed Jun 20 02:25:39 2007 UTC (16 years, 10 months ago) by pje
File length: 24708 byte(s)
Diff to previous 2304
Minor doc tweaks/updates.

Revision 2304 - (view) (download) - [select for diffs]
Modified Fri Apr 13 04:28:11 2007 UTC (17 years ago) by pje
File length: 24548 byte(s)
Diff to previous 2272
Python 2.5 support, common sub-expression caching in the code generator, and
misc. design note updates.

Revision 2272 - (view) (download) - [select for diffs]
Modified Thu Jan 18 03:32:44 2007 UTC (17 years, 3 months ago) by pje
File length: 24045 byte(s)
Diff to previous 2204
Misc. notes/doc changes left over from a few months ago.

Revision 2204 - (view) (download) - [select for diffs]
Modified Tue Jul 4 16:58:58 2006 UTC (17 years, 9 months ago) by pje
File length: 21746 byte(s)
Diff to previous 2164
Use struct types for rules and action definitions; correct dependencies 
to BytecodeAssembler 0.1 and DecoratorTools 1.1.

Revision 2164 - (view) (download) - [select for diffs]
Modified Mon May 29 17:52:24 2006 UTC (17 years, 11 months ago) by pje
File length: 21706 byte(s)
Diff to previous 2163
Fix a problem with the before/after decorators.  Get rid of the Rule 
type, so that rules are pure value objects that compare and hash easily 
(making it easier to remove a rule from a ruleset at a later time).  
Minor doc tweaks.

Revision 2163 - (view) (download) - [select for diffs]
Modified Mon May 29 05:05:22 2006 UTC (17 years, 11 months ago) by pje
File length: 20932 byte(s)
Copied from: PEAK-Rules/peak/rules/framework.txt revision 2159
Diff to previous 2159
Shuffle some docs/tests around, add quickstart info

Filename: PEAK-Rules/peak/rules/framework.txt
Revision 2159 - (view) (download) - [select for diffs]
Modified Sun May 28 18:32:08 2006 UTC (17 years, 11 months ago) by pje
File length: 13497 byte(s)
Diff to previous 2157
Extensible method combination has landed!  around(), before(), after(), 
and when() all work now, and new method types and decorators can be
created without needing to subclass any ruleset or engine classes.
All that's left for the core to be complete is for TypeEngine objects to 
generate wrapper code for the functions they're attached to.

Filename: PEAK-Rules/peak/rules/framework.txt
Revision 2157 - (view) (download) - [select for diffs]
Modified Sun May 28 05:23:26 2006 UTC (17 years, 11 months ago) by pje
File length: 10433 byte(s)
Diff to previous 2156
Handle ambiguities in method combination.

Filename: PEAK-Rules/peak/rules/framework.txt
Revision 2156 - (view) (download) - [select for diffs]
Modified Sun May 28 04:05:52 2006 UTC (17 years, 11 months ago) by pje
File length: 9100 byte(s)
Diff to previous 2155
Method combination basics: standard methods, "around" methods,
"no" methods, chaining and implication.  The DefaultEngine
doesn't support multiple methods w/identical signatures,
however, and AmbiguousMethods support isn't implemented.
Nonetheless, the core framework is shaping up nicely, it's
just fairly limited in what it can dispatch on.

Filename: PEAK-Rules/peak/rules/framework.txt
Revision 2155 - (view) (download) - [select for diffs]
Modified Sat May 27 22:19:38 2006 UTC (17 years, 11 months ago) by pje
File length: 4557 byte(s)
Diff to previous 2153
Bootstrap phase zero: Rules, RuleSets, and a type-based
DefaultEngine that supports only exact type matches, but
is sufficient to implement the "implies()" generic function
(more or less).  The @abstract() and @when() decorators
also exist.  All in all, a highly miniaturized microkernel
version of peak.rules' future self.  The next phase will
be to implement method combination as a generic function,
and to add a bit of code generation to make generic functions
automatically call their __engine__ without needing any
boilerplate code.  (Caching would be good, too.)

Filename: PEAK-Rules/peak/rules/framework.txt
Revision 2153 - (view) (download) - [select for diffs]
Added Fri May 26 04:20:46 2006 UTC (17 years, 11 months ago) by pje
File length: 1131 byte(s)
Zero-functionality setup for PEAK-Rules: mostly design docs in README 
plus an outline of the functionality for the core framework in
framework.txt.

This form allows you to request diffs between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.

  Diffs between and
  Type of Diff should be a

Sort log by:

cvs-admin@eby-sarna.com

Powered by ViewCVS 1.0-dev

ViewCVS and CVS Help