Changes between Version 17 and Version 18 of FoolsCap

07/27/2007 05:44:48 PM (7 years ago)

Foolscap now has its own trac instance


  • FoolsCap

    v17 v18  
    33"Foolscap" is the name for the next-generation RPC protocol, intended to replace Perspective Broker. It has been under development (on and off) by Brian Warner for several years. 
    5 The current release is [ foolscap-0.1.4] . 
    7 The two primary responsibilities of an RPC protocol are to: 
    9  1. serialize an object graph, and reconstruct a useful equivalent on the remote side 
    10  1. allow the holder of a !RemoteReference in one process to invoke methods on a Referenceable in a different one 
    12 In addition, there are details like object naming, connection establishment, controlling object serialization, reference lifetime, and error reporting. 
    14 == New features == 
    15 (relative to oldpb, aka twisted.spread) 
    17  * most inert Python types are serializable, including unicode and sets 
    18  * clients and servers are implemented as [ Services], which share connections when possible and are easy to shut down 
    19  * links are encrypted/authenticated by default (using SSL) 
    20  * all objects are accessed through secure/unguessable "FURLs" 
    21   * explicitly published objects can be accessed through well-known FURLs 
    22  * you can declare method signatures (with "constraints", either in Interface classes or as method attribute/decorators) 
    23   * this enables defenses against resource-consumption DoS attacks, including stack-frame-exhaustion attacks 
    24   * (TODO) you can ask the deserializer about your current maximum memory/stackframe exposure, based upon what objects are visible and what methods they declare 
    25  * serializers for third-party classes can be registered using Adapters 
    26  * serializers are more "streaming" than in oldpb 
    27   * serializers can pause themselves, deferring serialization until later 
    28   * serializers can be paused when the network pipe is full 
    29  * newpb is architected to make it possible to rewrite serializers/deserializers in C, for speed 
    30  * object graph depth is limited by available heap memory, not available stack depth 
    32 == Show Me The Code == 
    34 The current release is available in my [ home directory], in the file []. This is an alpha release, since the protocol has not been finalized, and incompatible changes are being made every few months. 
    36 The latest Foolscap code lives in a mercurial repository, at The documentation is the doc/ directory and includes both the protocol specification and a short user's manual. Some day, it will probably be shipped as part of the "Twisted-Core" distribution, but only after the protocol and code have stabilized a bit. 
    38 == Status == 
    40 Foolscap is not yet ready for production use. The 'todo' and 'newpb-jobs.txt' files contain some of the things that need finishing before it will be ready. Connection negotiation needs to be changed to use variable-length certificate digests and certificate chains and variable-length object names, various questions about making objects "giftable" by default or not need to be answered and implemented, and we need to acquire operational experience with Foolscap as a whole to think about usability. 
    42 Release 0.1.4 is available in my [ home directory]. 
     5Foolscap now lives on its own Trac, at . Please visit there for downloads, source code, bugs, and documentation.