Skip to content
This repository has been archived by the owner on Jun 4, 2023. It is now read-only.

Commit

Permalink
release 4.70 because of the release of Python 3.7 beta 1
Browse files Browse the repository at this point in the history
  • Loading branch information
irmen committed Feb 1, 2018
1 parent ca1319a commit 544613c
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 218 deletions.
216 changes: 2 additions & 214 deletions docs/source/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -164,220 +164,8 @@ Change Log
- mailing list (``[email protected]``) 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 (``[email protected]``). 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.
5 changes: 2 additions & 3 deletions docs/source/pyrolite.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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 <http://search.maven.org/#search|ga|1|razorvine>`_, 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:

Expand Down
2 changes: 1 addition & 1 deletion src/Pyro4/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"""

# Pyro version
VERSION = "4.70.dev0"
VERSION = "4.70"

# standard object name for the Daemon object
DAEMON_NAME = "Pyro.Daemon"
Expand Down

0 comments on commit 544613c

Please sign in to comment.