22 | | You can use [wiki:TracAdmin trac-admin] to configure |
23 | | [http://trac.edgewall.org/ Trac] to better fit your project, especially in |
24 | | regard to ''components'', ''versions'' and ''milestones''. |
| 10 | 1. serialize an object graph, and reconstruct a useful equivalent on the remote side |
| 11 | 1. allow the holder of a !RemoteReference in one process to invoke methods on a Referenceable in a different one |
| 12 | |
| 13 | In addition, there are details like object naming, connection establishment, controlling object serialization, reference lifetime, and error reporting. |
| 14 | |
| 15 | == New features == |
| 16 | (relative to oldpb, aka twisted.spread) |
| 17 | |
| 18 | * most inert Python types are serializable, including unicode and sets |
| 19 | * clients and servers are implemented as [http://twistedmatrix.com/documents/current/api/twisted.application.service.html Services], which share connections when possible and are easy to shut down |
| 20 | * links are encrypted/authenticated by default (using SSL) |
| 21 | * all objects are accessed through secure/unguessable "FURLs" |
| 22 | * explicitly published objects can be accessed through well-known FURLs |
| 23 | * you can declare method signatures (with "constraints", either in Interface classes or as method attribute/decorators) |
| 24 | * this enables defenses against resource-consumption DoS attacks, including stack-frame-exhaustion attacks |
| 25 | * (TODO) you can ask the deserializer about your current maximum memory/stackframe exposure, based upon what objects are visible and what methods they declare |
| 26 | * serializers for third-party classes can be registered using Adapters |
| 27 | * serializers are more "streaming" than in oldpb |
| 28 | * serializers can pause themselves, deferring serialization until later |
| 29 | * serializers can be paused when the network pipe is full |
| 30 | * newpb is architected to make it possible to rewrite serializers/deserializers in C, for speed |
| 31 | * object graph depth is limited by available heap memory, not available stack depth |
| 32 | |
| 33 | == Show Me The Code == |
| 34 | |
| 35 | The current release is available in my [http://twistedmatrix.com/~warner/Foolscap/ home directory], in the file [http://twistedmatrix.com/~warner/Foolscap/foolscap-0.1.4.tar.gz]. This is an alpha release, since the protocol has not been finalized, and incompatible changes are being made every few months. |
| 36 | |
| 37 | The latest Foolscap code lives in a mercurial repository, at http://foolscap.lothar.com/. 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 | |
| 39 | == Status == |
| 40 | |
| 41 | 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 | |
| 43 | Release 0.1.4 is available in my [http://twistedmatrix.com/~warner/Foolscap/ home directory]. |