Changeset 28:5c331d546dcb

Show
Ignore:
Timestamp:
10/05/06 19:37:13 (2 years ago)
Author:
warner@lothar.com
Tags:

foolscap-0.0.3

branch:
default
Message:

[foolscap @ release foolscap-0.0.3]

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • ChangeLog

    r26 r28  
     12006-10-05  Brian Warner  <warner@lothar.com> 
     2 
     3        * foolscap/__init__.py: release Foolscap-0.0.3 
     4        * NEWS: update for 0.0.3 release 
     5 
    162006-10-05  Brian Warner  <warner@lothar.com> 
    27 
  • NEWS

    r1 r28  
    1 Releases of pb2 
     1User visible changes in pb2/newpb/Foolscap. 
     2 
     3* Release 0.0.3 (05 Oct 2006) 
     4 
     5** API Changes 
     6 
     7The primary entry point for Foolscap is now the "Tub": 
     8 
     9    import foolscap 
     10    t = foolscap.Tub() 
     11    d = t.getReference(pburl) 
     12    d.addCallback(self.gotReference) 
     13    ... 
     14 
     15The old "PBService" name is gone, use "Tub" instead. There are now separate 
     16classes for "Tub" and "UnauthenticatedTub", rather than using an "encrypted=" 
     17argument. Tubs always use encryption if available: the difference between the 
     18two classes is whether this Tub should use a public key for its identity or 
     19not. Note that you always need encryption to connect to an authenticated Tub. 
     20So install pyopenssl, really. 
     21 
     22** eventual send operators 
     23 
     24Foolscap now provides 'eventually' and 'fireEventually', to implement the 
     25"eventual send" operator advocated by Mark Miller's "Concurrency Among 
     26Strangers" paper (http://www.erights.org/talks/promises/index.html). 
     27eventually(cb, *args, **kwargs) runs the given call in a later reactor turn. 
     28fireEventually(value=None) returns a Deferred that will be fired (with 
     29'value') in a later turn. These behave a lot like reactor.callLater(0,..), 
     30except that Twisted doesn't actually promise that a pair of callLater(0)s 
     31will be fired in the right order (they usually do under unix, but they 
     32frequently don't under windows). Foolscap's eventually() *does* make this 
     33guarantee. In addition, there is a flushEventualQueue() that is useful for 
     34unit tests, it returns a Deferred that will only fire when the entire queue 
     35is empty. As long as your code only uses eventually() (and not callLater(0)), 
     36putting the following in your trial test cases should keep everything nice 
     37and clean: 
     38 
     39 def tearDown(self): 
     40     return foolscap.flushEventualQueue() 
     41 
     42** Promises 
     43 
     44An initial implementation of Promises is in foolscap.promise for 
     45experimentation. Only "Near" Promises are implemented to far (promises which 
     46resolve to a local object). Eventually Foolscap will offer "Far" Promises as 
     47well, and you will be able to invoke remote method calls through Promises as 
     48well as RemoteReferences. See foolscap/test/test_promise.py for some hints. 
     49 
     50** Bug Fixes 
     51 
     52Messages containing "Gifts" (third-party references) are now delivered in the 
     53correct order. In previous versions, the presence of these references could 
     54delay delivery of the containing message, causing methods to be executed out 
     55of order. 
     56 
     57The VOCAB-manipulating code used to have nasty race conditions, which should 
     58be all fixed now. This would be more important if we actually used the 
     59VOCAB-manipulating code yet, but we don't. 
     60 
     61Lots of internal reorganization (put all slicers in a subpackage), not really 
     62user-visible. 
     63 
     64Updated to work with recent Twisted HEAD, specifically changes to sslverify. 
     65This release of Foolscap ought to work with the upcoming Twisted-2.5 . 
     66 
     67** Incompatible protocol changes 
     68 
     69There are now separate add-vocab and set-vocab sequences, which add a single 
     70new VOCAB token and replace the entire table, respectively. These replace the 
     71previous 'vocab' sequence which behaved like set-vocab does now. This would 
     72be an incompatible protocol change, except that previous versions never sent 
     73the vocab sequence anyways. This version doesn't send either vocab-changing 
     74sequence either, but when we finally do start using it, it'll be ready. 
     75 
     76* Release 0.0.2 (14 Sep 2006) 
     77 
     78Renamed to "Foolscap", extracted from underneat the Twisted packaged, 
     79consolidated API to allow a simple 'import foolscap'. No new features or bug 
     80fixes relative to pb2-0.0.1 . 
     81 
    282 
    383* Release 0.0.1 (29 Apr 2006) 
     
    686certainly change at some point, so compatibility with future versions is not 
    787guaranteed. 
    8  
  • foolscap/__init__.py

    r21 r28  
    11"""Foolscap""" 
    22 
    3 __version__ = "0.0.2+
     3__version__ = "0.0.3
    44 
    55# here are the primary entry points