Pyro 4.0 development
Changes in CVS for Pyro 4.0
- requires at least Python 2.5
- examples/benchmark show about 25% speed increase for Pyro 4.0 over Pyro 3.7.
- wire protocol change: no longer compatible with older Pyro versions (message header has been shrunk)
- removed all mobile code support
- added @Pyro.remote decorator to explicitly annotate methods accessible via Pyro (required)
- new 'expose' parameter for delegateTo, to allow you to specify a list of methods that need to be exposed from the delegated object.
- Jython doesn't support decorators so it can no longer directly be used to run Pyro code.
- all source files now use 4-space indentation instead of tabs
- cleaned up change history in manual, renamed chapter 3 file from 'install' to 'config'
- NS broadcast retry is now 1 (was 2) and timeout is now 0.75 (was 2)
- Removed failover-NS (primary/secondary NS) support, PYRO_NS2_XXX config items.
- Removed persistent Naming Server.
- Removed the shutdown command of the Naming Server and nsc tools.
- all boolean config items are now really True/False (was 1/0)
- updated all other code too to use booleans instead of 0/1, and a few other things polished up to newer Python syntax
added 2 shortcut functions: Pyro.proxy and Pyro.attrproxy to make it even easier to create proxies in client code. (They are aliases for the corresponding getProxy methods from Pyro.core)
Pyro.core.SynchronizedObjBase now correctly handles string exceptions (deprecated anyway) (needs backport to 3.6-maintenance)
- removed PYRO_MULTITHREADED config option, all Pyro servers are now multithreaded. Can no longer be configured.
- removed PYRO_NS_DEFAULTGROUP config option. You will have to make sure yourself that all your object names are absolute and contain the full hierarchical name.
- removed PYRO_CHECKSUM config option and message checksumming overhead.
removed the Pyro.naming.NameServerProxy. All proxies used for the NS are now just regular Pyro proxies.
- fullName() method on NS proxy is gone. It makes no sense anymore.
- when creating names and groups in the NS, the whole path sequence is created if it doesn't exist. No need anymore to create all sub groups yourself first.
- Pyro now requires that your Python has thread support. Removed Pyro.util.supports_multithreading() and all uses of it.
- Pyro now requires that your Python has zlib (for compression option).
- uses builtin uuid module if available for GUID creation (Python 2.5+)
removed UserLogger object and PYRO_USER_LOGFILE and PYRO_USER_TRACELEVEL config items
- removed support for my 'recvall' socket patch (it was flawed)
- timeouts now implemented using socket.settimeout instead of custom select thing (naming, protocol)
- recv loop can now handle EAGAIN errors when MSG_WAITALL is used
- removed PYRO_PICKLE_FORMAT config item. Pickling protocol is now always best available (binary).
- removed initClient() and initServer(). Pyro doesn't require any initialisation function to be called anymore.
- this also means that a Pyro server can now start in a read-only location (previously, it required a writable directory)
- new function: Pyro.util.dumpConfig() that you could use to dump the Pyro config in the log, much like the init functions used to do.
- removed the custom logging implementation, switched everything to Python's own logger.
- removed PYRO_TRACELEVEL, PYRO_LOGFILE, PYRO_STDLOGGING and PYRO_STDLOGGING_CFGFILE config items
- added PYRO_LOG_CONFIG config item that points to the logger config file (default pyrolog.cfg)
- Logger config done via log config file. If unconfigured, logging is disabled.
- Pyro.util.configureBasicLogging() method added to set up logging for people too lazy to write a logging config file.
- removed the following examples: logging, multithread, agent2, agent3, distributed-computing, testmobile, threadmobile
wxnsc updated to recent WxPython API, deprecation warning is gone
- removed the Pyro Implementation chapter from the manual, it was outdated and didn't contain much info anyway.
- removed Pyro.ext.daemonizer, Pyro.ext.remote, Pyro.ext.remote_nons and the 'quickstart' examples.
- esd and nsd (unix daemons) scripts have been removed, as well as the rns (restarting name server) script.
- xnsc and wxnsc gui tools have been removed. They're now folded into the nsc command: use a command line switch to launch the appropriate gui tool.
- renamed all batch files with 'pyro-' prefix to avoid name clashes (debian package already had this)
- proxy URI's that get resolved will replace the original URI in the proxy to avoid needless resolves later on
- util.getPyroTraceback can now be called without arguments, in that case it will determine the exception object itself
- setInitTLS() is gone
thread local storage is now implemented using threading.local() from Python 2.4+ standard library
- PyroURI does no longer do automagic name resolving, this also fixed the hash problem (PyroURI objects are now considered immutable)
- converted all classes to new-style classes (direved from object)
Pyro.ObjBase uses slots so you can now use slots in your own objects too, to control the set of allowed attributes
fixed bug that self.daemon wasn't always set in NameServerStarter, causing problems with the shutdown and getServerSockets methods
- internal getHostname method now uses getfqdn instead of regular gethostname. Hopefully this will avoid Pyro binding on 127.0.0.1 some more.
- don't allow use of setTimeout in Jython because it causes unreliable behavior
