From 544613cb1801b1cc5b06a0e937cb76a580afd984 Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Thu, 1 Feb 2018 20:56:35 +0100 Subject: [PATCH] release 4.70 because of the release of Python 3.7 beta 1 --- docs/source/changelog.rst | 216 +------------------------------------- docs/source/pyrolite.rst | 5 +- src/Pyro4/constants.py | 2 +- 3 files changed, 5 insertions(+), 218 deletions(-) diff --git a/docs/source/changelog.rst b/docs/source/changelog.rst index c4960e3a..45850efa 100644 --- a/docs/source/changelog.rst +++ b/docs/source/changelog.rst @@ -164,220 +164,8 @@ Change Log - mailing list (``pyro@freelists.org``) has been discontinued. -**Pyro 4.52** - -- fixed Python 3.6 compatibility issue in name server when using sqlite storage ("cannot VACUUM from within a transaction") -- fixed Python 3.6 ResourceWarning in unit test -- Python 3.6 added to travis CI build -- fixed possible crash on Python 2.x when shutting down a daemon from within a Pyro server object itself (because it tried to join its own thread) -- sensible error is raised again in client when threadpool server can't accept any more new connections (regression since 4.50) -- daemon has new ``resetMetadataCache`` method to be used when the set of exposed members of your Pyro class changes during runtime -- better testcases for properly handling handshake error reasons - - -**Pyro 4.51** - -- added PYROMETA magic URI protocol, to look up an object with the given metadata tags (yellow-page lookup rather than by name) - Example: ``Pyro4.Proxy("PYROMETA:metatag1,metatag2")`` -- added distributed-computing3 example to show simple work load distribution using PYROMETA object discovery -- fixed unlikely but possible crash in logging statement when client disconnects from multiplex server - - -**Pyro 4.50** - -- new ITER_STREAM_LINGER config item to keep streams alive for a given period after proxy disconnect (defaults to 30 sec.) -- new NS_AUTOCLEAN config item to set a recurring period in seconds where the Name server checks its registrations. - It will then auto cleanup registrations after a short while if they're no longer available. (defaults to 0.0 - disabled). -- Future can now be given a delay before it is evaluated -- Future can now be cancelled (if it hasn't been evalued yet) - - -**Pyro 4.49** - -- added iterator item streaming support. It is now possible to return iterators from a remote - call or even call a remote generator function, and iterate over it in the client. - Items will be retrieved on demand from the server. -- new ITER_STREAMING config item to disable or enable streaming support in the server (default=enabled) -- new ITER_STREAM_LIFETIME config item to be able to set a maximum lifetime for item streams (default=no limit) -- the iter streaming is supported for Java and .NET in Pyrolite 4.14 as well -- new simplified stockquotes example using generators instead of callbacks -- changed daemon shutdown mechanism again to not use separate thread anymore, fixes thread leak -- serpent library dependency updated to 1.15 - - -**Pyro 4.48** - -- The threaded socket server now adapts the number of threads dynamically depending on connection count. - This resolves the problem where your clients freeze because the server ran out of free connections - When all threads are busy, new connections will fail with an exception. -- THREADPOOL_SIZE_MIN config item added to specify the min number of threads (defaults to 4) -- THREADPOOL_SIZE increased to 40 (was 16, and no longer allocates all these threads upfront) -- THREADPOOL_ALLOW_QUEUE config item removed, it is no longer relevant -- made the repr strings use semicolons instead of comma as separator to avoid confusion when printed in lists -- added per proxy serializer override by setting proxy._pyroSerializer -- added distributed-mandelbrot example that shows ascii animation and picture of the mandelbrot fractal set -- fixed timeout when locating name server on 127.0.1.1 on systems that don't use that address (osx) -- fixed ResourceWarning in socketutil.createSocket; socket that could not be connected is properly closed now - - -**Pyro 4.47** - -- *Backwards incompatible change:* As announced in the previous version, the instance_mode and instance_creator - parameters have now been removed from the @expose decorator. Use @behavior to specify them instead on your classes. -- The default instance mode when using @expose on the class and not using @behavior, is now also 'session' - (was 'single'). Note that when you used @behavior with its default argument or only @expose on methods, - the instance mode of the class already was 'session'. - If your code really requires the pyro object to be a singleton, add an explicit - @behavior(instance_mode="single") to that class. You can already start doing this while still using Pyro 4.46 and - then upgrade the library once you've converted everything. -- Name server lookup now also considers 127.0.1.1 when trying to find a name server on localhost. - This is convenient on some systems (Debian Linux) where 127.0.1.1 is often the address assigned - to the local system via the hosts file. -- fixed multiplex server shutdown sometimes hanging -- fixed crash that sometimes occurred in daemon shutdown -- fixed crash that sometimes occurred when releasing and reconnecting the proxy from different threads - - -**Pyro 4.46** - -.. note:: - Compatibility issue: - The change mentioned below about ``@expose`` now being required by default - requires a change in your (server-)code or configuration. Read on for details. - -.. note:: - Using ``@expose(...)`` on a class to set the ``instance_mode`` or/and ``instance_creator`` for that - class, also exposes ALL methods of that class. That is an unintended side-effect that will be fixed - in the next Pyro version. You can already fix your code right now to prepare for this. Read on for details. - -- ``@Pyro4.behavior`` decorator added that should now be used to set instance_mode and instance_creator instead of - using ``@Pyro4.expose``. You can still use ``@expose`` in this release, but its arguments will be removed - in the next Pyro version. So by then you have to have updated your code or it won't run anymore. - The fix is simple: replace all occurences of ``@expose(...)`` *where you set the ``instance_mode`` or/and ``instance_creator``* - on your Pyro class, by ``@behavior(...)`` -- and add new ``@expose`` decorations to the class or the methods - as required to properly expose them. Also read the next bullet. -- *Backwards incompatible behavior change:* in the spirit of 'secure by default', it's now required to use ``@expose`` - on things you want to expose via Pyro. This is because the REQUIRE_EXPOSE config item is now True by default. - The "servers" chapter contains details about this and how you can best approach this upgrade issue. -- blobtransfer example added. -- improved the docs on binary data transfer a bit. -- code now uses set literals instead of old fashioned set([...]) -- removed the way outdated 'upgrading from Pyro3' chapter from the documentation. -- Pyro4.util.get_exposed_members now has a cache which speeds up determining object metadata enormously on subsequent connections. -- added paragraph to server chapter in documentation about how to expose classes without changing the source code (such as 3rd party libraries) -- added thirdpartylib example for the above - - -**Pyro 4.45** - -- Dependency fix in setup/wheel/pip for selectors34 module. - - -**Pyro 4.44** - -- *Behavior change:* when the threadpool server is used and it runs out of worker threads, clients attempting to connect - now get a connection error telling them that the server threadpool has to be increased. - On python 3.2 and newer a short timeout is used for the case that in the meantime a connection becomes available. -- THREADPOOL_ALLOW_QUEUE config item added. Enables you to choose for the previous - blocking behavior when the threadpool server can no longer accept new connections. Defaults to False. - *note: this is a temporary solution, in the next release a different threadpool implementation will be shipped - for which this config item is no longer relevant. It will be removed again then.* -- Fixed 'malformed string' error when a Python 2 client talks to a Python 3 server; - proxy metadata and nameserver metadata tags are no longer returned as a set but as a list. - (This problem occurs in the serpent serializer because of a problem with the underlying ast.literal_eval function - across different python versions) -- improved multiplex server, now uses best available selector on your platform (kqueue, epoll, etc) - This was done by using the 'selectors' module, on older pythons (<3.4) - the backport 'selectors34' has been added as a new requirement. -- added selector property on the daemon (to expose the multiplexing selector if that servertype is used). -- Added Daemon.combine() which merges different daemons' request loops and lets you just run the 'master daemon' requestLoop -- fixed import and test problems with IronPython (it doesn't like the dill serializer either, like pypy) -- Improved security when comparing HMAC codes (against timing attacks) -- added 'diffie-hellman' example to shows a way to approach server-client agreement on a shared secret key -- a few IronPython releated changes regarding str/bytes to decrease the number of special cases - - -**Pyro 4.43** - -- improved docs on instance modes and instance creation -- improved cleanup of objects with instance_mode 'session', fixes possible memory leak -- fixed float vs None bug in rare situation when connecting socket gets a retryable error - - -**Pyro 4.42** - -- added dill serialization support (https://pypi.python.org/pypi/dill) -- fixed dotted attribute client code in the ``attributes`` example -- handles EINTR signal and will continue the server loop now in this case, on Python 3.4 and newer. -- fixed async proxy calls not being done async, when metadata is used - - -**Pyro 4.41** - -- fixed uri parsing bug in locateNS when trying to locate name server via unix domain socket -- fixed IronPython crash with Pyro4.core.current_context -- got rid of __slots__ on the URI class -- fixed output of nsc metadata string on Python 2.x -- sock_reuse option is now default on -- daemon now logs its pid when starting -- poll-server error handling now reflects the select server (swallow error when shutting down) - - -**Pyro 4.40** - -- added python 3.5 to supported versions and configs -- support for metadata added to the name server (list of strings per registration). - This provides a service like yellow-pages where you can query on category (for instance). - You need to use memory or sqlite storage for this; the dbm storage doesn't support it. -- name server also has a new method set_metadata(), to set new metadata for an existing registration -- nsc tool has new commands to deal with metadata in the name server: setmeta, listmeta_all and listmeta_any -- removed obsolete stdinstdout example, it depended on exposing private attributes and Pyro hasn't allowed this anymore for quite some time (4.27) -- removed a problematic ipv6 unittest, and an often-failing workaround to determine the ipv6 address -- added ``current_context.client_sock_addr`` containing the address of the client doing the call -- current_context is now correct for oneway calls and async calls -- fixed some __copy__ methods to correctly deal with possible subclassing (Proxy) - - -**Pyro 4.39** - -- dropped support for Python 2.6 and Python 3.2. Supported versions are now 2.7, 3.3, 3.4 and up. -- better exception when message size exceeds 2 gigabyte limit -- mentioned the 2 gigabyte message size limit in the docs -- added auto retry mechanism, MAX_RETRIES config item, and autoretry example. -- API CHANGE: the instance_creator function passed to @expose now get the class as a single parameter when invoked by Pyro -- removed test suite dependencies on unittest2 (was used for Python 2.6) -- greatly improved the messagebus example, it now contains a persistent storage as well -- can now deserialize sqlite3 exceptions as well (without the need of registering custom class serializers) -- serialized proxies now gets the timeout and retries properties from the active config settings rather than from the serialized data -- new MessageTooLargeError when the max message size is exceeded (subclesses ProtocolError, which was the old error thrown in this case) - - -**Pyro 4.38** - -.. note:: - The below mentioned wire protocol change is backwards-incompatible. - You have to update all your pyro libraries on clients and servers. - (And Pyrolite libraries if you use them too) - -- wire protocol version changed to 48 (new connection logic). -- changed the initial connection handshake protocol. Proxy and daemon now perform a handshake by exchanging data. - You can set your own data on the proxy attribute ``_pyroHandshake``. You can override a proxy method ``_pyroValidateHandshake`` - and a daemon method ``validateHandshake`` to customize/validate the connection setup. -- drastically reduced the overhead of creating a new proxy connection by piggybacking the metadata on the - connection response (this avoids a separate remote call to get_metadata). New proxy connections are ~50% faster. -- added ``Daemon.clientDisconnect()`` as a hook for when clients disconnect (``Daemon.validateHandshake`` can - be used as the hook to handle new connections) -- you can now register a class on the Daemon instead of an object, and define instancing strategy: singleton, session, percall -- you can provide an optional factory method to create instances of your pyro server class when needed according to the instancing_strategy -- added handshake, instancemode and usersession examples -- added distributed-computing2 example -- added messagebus example -- fixed callcontext example daemon to actually return a custom annotation -- fixed benchmark/connections example -- httpgateway recognises ``X-Pyro-Correlation-Id`` http header on requests -- new mailing list address (``pyro@freelists.org``). Bye bye Sourceforge. - **Earlier versions** -Change history for earlier versions is available by looking at older versions of this file in the Github source repository. +Change history for earlier versions is available by looking at older versions of this documentation. +One way to do that is looking at previous versions in the Github source repository. diff --git a/docs/source/pyrolite.rst b/docs/source/pyrolite.rst index abe2fa24..2fdb5f6e 100644 --- a/docs/source/pyrolite.rst +++ b/docs/source/pyrolite.rst @@ -28,11 +28,10 @@ The .NET version is available using the nuget package manager, package name is ` *Getting the Java version:* The Java library can be obtained from `Maven `_, groupid ``net.razorvine`` artifactid ``pyrolite``. -Readme: http://irmen.home.xs4all.nl/pyrolite/README.txt +Source is on Github: https://github.com/irmen/Pyrolite -License (same as Pyro): http://irmen.home.xs4all.nl/pyrolite/LICENSE +Readme: https://raw.githubusercontent.com/irmen/Pyrolite/master/README.txt -Source is on Github: https://github.com/irmen/Pyrolite Small code example in Java: diff --git a/src/Pyro4/constants.py b/src/Pyro4/constants.py index 5168c0c2..509f6cce 100644 --- a/src/Pyro4/constants.py +++ b/src/Pyro4/constants.py @@ -5,7 +5,7 @@ """ # Pyro version -VERSION = "4.70.dev0" +VERSION = "4.70" # standard object name for the Daemon object DAEMON_NAME = "Pyro.Daemon"