Changes between Version 2 and Version 3 of NewPB

09/14/2006 06:37:46 PM (10 years ago)

rename newpb to Foolscap


  • NewPB

    v2 v3  
    1 "NewPB" 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.
    3 The two primary responsibilities of an RPC protocol are to:
    5  1. serialize an object graph, and reconstruct a useful equivalent on the remote side
    6  1. allow the holder of a !RemoteReference in one process to invoke methods on a Referenceable in a different one
    8 In addition, there are details like object naming, connection establishment, controlling object serialization, reference lifetime, and error reporting.
    10 == New features ==
    11 (relative to oldpb, aka twisted.spread)
    13  * all methods take keyword arguments instead of positional arguments
    14  * most inert Python types are serializable, including unicode and sets
    15  * clients and servers are implemented as Services, which share connections when possible and are easy to shut down
    16  * links are encrypted/authenticated by default (using SSL)
    17  * all objects are accessed through secure/unguessable "PB-URLs"
    18   * explicitly published objects can be accessed through well-known PB-URLs
    19  * you can declare method signatures (with "constraints", either in Interface classes or as method attribute/decorators)
    20   * this enables defenses against resource-consumption DoS attacks, including stack-frame-exhaustion attacks
    21   * you can ask the deserializer about your current maximum memory/stackframe exposure, based upon what objects are visible and
    22     what
    23  * serializers for third-party classes can be registered using Adapters
    24  * serializers are more "streaming" than in oldpb
    25   * serializers can pause themselves, deferring serialization until later
    26   * serializers can be paused when the network pipe is full
    27  * newpb is architected to make it possible to rewrite serializers/deserializers in C, for speed
    28  * object graph depth is limited by available heap memory, not available stack depth
    30 == Show Me The Code ==
    32 The first release is available in my [ home directory]: [ TwistedPb2-0.0.1.tar.bz2]. This is an alpha release, more of a technology preview than anything else, but should serve to give potential users an idea of what to expect from newpb.
    34 The latest NewPB code lives in SVN trunk, in the twisted.pb module (source:trunk/twisted/pb). The documentation is in source:trunk/doc/pb and includes both the protocol specification and a short user's manual. It is currently only available via SVN and as a separate module. 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.
    36 == Status ==
    38 NewPB is not yet ready for production use. source:trunk/doc/pb/newpb-todo.txt and source:trunk/doc/pb/newpb-jobs.txt 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 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 newpb as a whole to think about usability.
     1!NewPB has been renamed to FoolsCap