Changes between Version 10 and Version 11 of WikiStart
- Timestamp:
- 09/02/2007 12:21:31 AM (17 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
WikiStart
v10 v11 2 2 = Foolscap = 3 3 4 "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. 4 "Foolscap" is the name for the next-generation RPC protocol, intended to 5 replace Perspective Broker. It has been under development (on and off) by 6 Brian Warner for several years. 5 7 6 The current release is [/releases/foolscap-0.1.6.tar.gz foolscap-0.1.6] ([/releases/foolscap-0.1.6.tar.gz.sig gpg sig]). 8 The current release is [/releases/foolscap-0.1.6.tar.gz foolscap-0.1.6] 9 ([/releases/foolscap-0.1.6.tar.gz.sig gpg sig]). 7 10 8 11 The two primary responsibilities of an RPC protocol are to: 9 12 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 13 1. serialize an object graph, and reconstruct a useful equivalent on the 14 remote side 15 1. allow the holder of a !RemoteReference in one process to invoke methods 16 on a Referenceable in a different one 12 17 13 In addition, there are details like object naming, connection establishment, controlling object serialization, reference lifetime, and error reporting. 18 In addition, there are details like object naming, connection establishment, 19 controlling object serialization, reference lifetime, and error reporting. 14 20 15 21 == New features == … … 17 23 18 24 * 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 25 * clients and servers are implemented as 26 [http://twistedmatrix.com/documents/current/api/twisted.application.service.html 27 Services], which share connections when possible and are easy to shut down 20 28 * links are encrypted/authenticated by default (using SSL) 21 29 * all objects are accessed through secure/unguessable "FURLs" 22 30 * 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 31 * you can declare method signatures (with "constraints", either in Interface 32 classes or as method attribute/decorators) 33 * this enables defenses against resource-consumption DoS attacks, including 34 stack-frame-exhaustion attacks 35 * (TODO) you can ask the deserializer about your current maximum 36 memory/stackframe exposure, based upon what objects are visible and what 37 methods they declare 26 38 * serializers for third-party classes can be registered using Adapters 27 39 * serializers are more "streaming" than in oldpb 28 40 * serializers can pause themselves, deferring serialization until later 29 41 * 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 42 * newpb is architected to make it possible to rewrite 43 serializers/deserializers in C, for speed 44 * object graph depth is limited by available heap memory, not available 45 stack depth 32 46 33 47 == Show Me The Code == 34 48 35 The current release is available [/releases/foolscap-0.1.6.tar.gz here]. This is an alpha release, since the protocol has not been finalized, and incompatible changes are being made every few months. Older releases are available [/releases/ here]. 49 The current release is available [/releases/foolscap-0.1.6.tar.gz here]. This 50 is an alpha release, since the protocol has not been finalized, and 51 incompatible changes are being made every few months. Older releases are 52 available [/releases/ here]. 36 53 37 The latest Foolscap code lives in a [http://www.selenic.com/mercurial/wiki/ mercurial] repository, at http://foolscap.lothar.com/repos/ . To retrieve a copy of the trunk use the following command: 54 The latest Foolscap code lives in a [http://www.selenic.com/mercurial/wiki/ 55 mercurial] repository, at http://foolscap.lothar.com/repos/ . To retrieve a 56 copy of the trunk use the following command: 38 57 39 58 {{{ … … 41 60 }}} 42 61 43 There are two online source-code browsers, the native hgwebdir.cgi at http://foolscap.lothar.com/repos/trunk (which also has a [http://foolscap.lothar.com/repos/trunk?style=gitweb gitweb-style view]), and the Trac Mercurial plugin at the [/trac/browser Browse Source] link above. Both are pretty handy. 62 There are two online source-code browsers, the native hgwebdir.cgi at 63 http://foolscap.lothar.com/repos/trunk (which also has a 64 [http://foolscap.lothar.com/repos/trunk?style=gitweb gitweb-style view]), and 65 the Trac Mercurial plugin at the [/trac/browser Browse Source] link above. 66 Both are pretty handy. 44 67 45 The documentation is in the [source:doc/ doc/ directory] and includes both the protocol specification and a short user's manual. Rendered HTML from the most recent release lives [/docs/ here], and [/docs/using-foolscap.html using-foolscap.html] is probably the best place to start. 68 The documentation is in the [source:doc/ doc/ directory] and includes both 69 the protocol specification and a short user's manual. Rendered HTML from the 70 most recent release lives [/docs/ here], and [/docs/using-foolscap.html 71 using-foolscap.html] is probably the best place to start. 46 72 47 Some day, Foolscap may be shipped as part of the "Twisted-Core" distribution, but only after the protocol and code have stabilized a bit. 73 Some day, Foolscap may be shipped as part of the "Twisted-Core" distribution, 74 but only after the protocol and code have stabilized a bit. 48 75 49 76 == Status == 50 77 51 Foolscap is not yet ready for production use. The [source:doc/todo.txt 'todo.txt'] and [source:doc/jobs.txt '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. 78 Foolscap is not yet ready for production use. The [source:doc/todo.txt 79 'todo.txt'] and [source:doc/jobs.txt 'jobs.txt'] files contain some of the 80 things that need finishing before it will be ready. Connection negotiation 81 needs to be changed to use variable-length certificate digests and 82 certificate chains and variable-length object names, various questions about 83 making objects "giftable" by default or not need to be answered and 84 implemented, and we need to acquire operational experience with Foolscap as a 85 whole to think about usability. 52 86 53 Release 0.1.6 (as well as older releases) are available in the [/releases/ releases directory]. 87 Release 0.1.6 (as well as older releases) are available in the [/releases/ 88 releases directory]. 54 89 55 90 == Links == 56 91 57 * Foolscap takes many ideas from the [http://www.erights.org/ E Language]. Foolscap is my attempt to make the concepts of E available to python+twisted programmers. 58 * The Twisted wiki has [http://twistedmatrix.com/trac/wiki/FoolsCap a page] on Foolscap where this information used to live. 92 * Foolscap takes many ideas from the [http://www.erights.org/ E Language]. 93 Foolscap is my attempt to make the concepts of E available to 94 python+twisted programmers. 95 * The Twisted wiki has [http://twistedmatrix.com/trac/wiki/FoolsCap a page] 96 on Foolscap where this information used to live. 59 97 60 98