[Subversion] / Contextual / Contextual.txt  

Log of /Contextual/Contextual.txt

Parent Directory

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


Revision 2511 - (view) (download) - [select for diffs]
Modified Sun Mar 9 17:58:19 2008 UTC (16 years ago) by pje
File length: 22703 byte(s)
Diff to previous 2391
Bug fixes for state initialization and registry wildcard lookups.

Revision 2391 - (view) (download) - [select for diffs]
Modified Fri Oct 26 02:24:37 2007 UTC (16 years, 5 months ago) by pje
File length: 22704 byte(s)
Diff to previous 2334
Trim obsolete docs, add 2.3/2.4 compat docs to dev guide.

Revision 2334 - (view) (download) - [select for diffs]
Modified Sun Jul 8 05:30:31 2007 UTC (16 years, 8 months ago) by pje
File length: 20781 byte(s)
Diff to previous 2297
More tests, API tweaks, add a bit of docs.

Revision 2297 - (view) (download) - [select for diffs]
Modified Sat Mar 3 17:41:05 2007 UTC (17 years, 1 month ago) by pje
File length: 12684 byte(s)
Diff to previous 2295
Implement better scoping, by allowing states to be context managers.
Also, renamed setting->value and parameter->expression.  Expressions
scan be scoped to services, such that a "resource" is just an
"Action.expression" (i.e. an expression scoped to the nearest Action
service).  Instead of using 'with service_instance:', you now use
'with service_class.new():' to replace a service.

The next refactoring will change keys from being functions, to being
objects, allowing them to be set to either values or expressions
dynamically.  As a side-effect, this will drop the dependencies to
both the SymbolType and ProxyTypes packages, although that's not the
reason for doing it.  The real reason is that it will allow things
like this::

    with context.new():
        some_var  <<  some_value
        other_var <<= lambda:some_expression
        # code that uses these variables

as the canonical way to set variables in a context. 

Revision 2295 - (view) (download) - [select for diffs]
Modified Wed Feb 28 04:16:39 2007 UTC (17 years, 1 month ago) by pje
File length: 12728 byte(s)
Diff to previous 2293
Another major refactoring -- merged Config and App into State, and
implemented dynamic state propagation that eliminates the need to
explicitly define ServiceAreas the way the PEAK core does.  This
new system is 100% lock-free and thread-safe (assuming that your own
code is, too!) and has a smaller, friendlier API than the previous
half-dozen attempts.  The core state management system is now
rock-solid, but there are a few minor areas where protocol changes
may occur.  See the "TODO" section in README.txt for details.

Revision 2293 - (view) (download) - [select for diffs]
Modified Mon Feb 26 02:16:05 2007 UTC (17 years, 1 month ago) by pje
File length: 13135 byte(s)
Diff to previous 2289
Implemented EigenValue-style write-until-read immutability for Config
objects.  This new algorithm is actually thread-safe without needing
any locks, by using the atomic properties of dictionaries, and by
detecting conflicts *after* a write attempt is made.  In the event of
a race between two or more threads, it's nondeterministic who will
"win", but there will be exactly one winner and all other writers
will fail.

Proof (informal):

  writes are copied into buffer[key]

  snapshot[key] is never modified except via setdefault -- therefore
  it can only ever have *one* value

  when snapshot[key] is set, its value comes from buffer[key]; thus,
  snapshot[key] is always *some* (indeterminately chosen) setting
  that was set by writing to the mapping, or by computing a default
  value.

  once a write is completed, snapshot.get(key, value_written) is
  used to verify that snapshot[key] is either *empty* OR a value
  that is the same as or equal to the value written.

  If the value is different, some other writer's value was read
  first, and our write is in conflict.  If the value is the same,
  then our write was "successful", in that there is a *chance* it
  will be the end value of the setting.

In other words, a succesful write does *not* necessarily mean that
the written value is or will be "the" value.  It is still possible
to have non-deterministic behavior if multiple threads are
simultaneously writing to the same Config, but it will not corrupt
the Config or violate the "only one value is ever seen by readers"
invariant.  If precedence of an individual setting value matters, 
you must serialze the writes, but unserialized writes will not
cause inconsistent behavior.  This is a sufficient guarantee to
allow e.g. configuration file loaders to be written.

Revision 2289 - (view) (download) - [select for diffs]
Modified Sun Feb 25 03:11:19 2007 UTC (17 years, 1 month ago) by pje
File length: 13080 byte(s)
Diff to previous 2288
Simplified App-switching API, added App[] delegation to its config, and
add more docs.

Revision 2288 - (view) (download) - [select for diffs]
Modified Sun Feb 25 02:31:00 2007 UTC (17 years, 1 month ago) by pje
File length: 12419 byte(s)
Diff to previous 2279
Misc. cleanups, more API doc and tests

Revision 2279 - (view) (download) - [select for diffs]
Modified Sat Feb 24 05:37:44 2007 UTC (17 years, 1 month ago) by pje
File length: 5943 byte(s)
Diff to previous 2227
Major API overhaul.  Service classes now act like peak.binding.Singletons,
in that the class itself is a proxy for the current instance.  This
eliminates the need for two names to refer to the "same" object.  Settings
are now created with decorators, the module is peak.context instead of
peak.util.context, and many many other changes.  And there are still more
to come, but mostly additions and some tweaks to how the App context works.

Revision 2227 - (view) (download) - [select for diffs]
Modified Thu Jul 20 04:28:31 2006 UTC (17 years, 8 months ago) by pje
File length: 1042 byte(s)
Diff to previous 2225
More work on docs

Revision 2225 - (view) (download) - [select for diffs]
Modified Thu Jul 20 02:26:24 2006 UTC (17 years, 8 months ago) by pje
File length: 1093 byte(s)
Diff to previous 2220
Begin re-org of tests/doc

Revision 2220 - (view) (download) - [select for diffs]
Added Wed Jul 19 18:56:35 2006 UTC (17 years, 8 months ago) by pje
File length: 107 byte(s)
Make README testable, add new files that 'context.txt' will be 
refactored into.  Add 'context.replaces()' class decorator to make it 
easier to define an alternative service implementation.

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