Commit 4ca65816 authored by Kirill Smelkov's avatar Kirill Smelkov

pygolang v0.0.3

parent 3b241983
Pygolang change history Pygolang change history
----------------------- -----------------------
0.0.3 (2019-08-29)
~~~~~~~~~~~~~~~~~~
- Provide Cython/nogil API with goroutines and channels. Cython API is not only
faster compared to Python version, but also, due to *nogil* property, allows to
build concurrent systems without limitations imposed by Python's GIL.
This work was motivated by wendelin.core__ v2, which, due to its design,
would deadlock if it tries to take the GIL in its pinner thread.
Implementation of Python-level goroutines and channels becomes tiny wrapper
around Cython/nogil API. This brings in ~5x speedup to Python-level `golang`
package along the way (`commit 1`__, 2__, 3__, 4__, 5__, 6__, 7__, 8__, 9__,
10__, 11__, 12__, 13__, 14__, 15__, 16__, 17__, 18__, 19__, 20__, 21__, 22__,
23__, 24__, 25__, 26__, 27__).
__ https://pypi.org/project/wendelin.core
__ https://lab.nexedi.com/kirr/pygolang/commit/d98e42e3
__ https://lab.nexedi.com/kirr/pygolang/commit/352628b5
__ https://lab.nexedi.com/kirr/pygolang/commit/fa667412
__ https://lab.nexedi.com/kirr/pygolang/commit/f812faa2
__ https://lab.nexedi.com/kirr/pygolang/commit/88eb8fe0
__ https://lab.nexedi.com/kirr/pygolang/commit/62bdb806
__ https://lab.nexedi.com/kirr/pygolang/commit/8fa3c15b
__ https://lab.nexedi.com/kirr/pygolang/commit/ad00be70
__ https://lab.nexedi.com/kirr/pygolang/commit/ce8152a2
__ https://lab.nexedi.com/kirr/pygolang/commit/7ae8c4f3
__ https://lab.nexedi.com/kirr/pygolang/commit/f971a2a8
__ https://lab.nexedi.com/kirr/pygolang/commit/83259a1b
__ https://lab.nexedi.com/kirr/pygolang/commit/311df9f1
__ https://lab.nexedi.com/kirr/pygolang/commit/7e55394d
__ https://lab.nexedi.com/kirr/pygolang/commit/790189e3
__ https://lab.nexedi.com/kirr/pygolang/commit/a508be9a
__ https://lab.nexedi.com/kirr/pygolang/commit/a0714b8e
__ https://lab.nexedi.com/kirr/pygolang/commit/1bcb8297
__ https://lab.nexedi.com/kirr/pygolang/commit/ef076d3a
__ https://lab.nexedi.com/kirr/pygolang/commit/4166dc65
__ https://lab.nexedi.com/kirr/pygolang/commit/b9333e00
__ https://lab.nexedi.com/kirr/pygolang/commit/d5e74947
__ https://lab.nexedi.com/kirr/pygolang/commit/2fc71566
__ https://lab.nexedi.com/kirr/pygolang/commit/e4dddf15
__ https://lab.nexedi.com/kirr/pygolang/commit/69db91bf
__ https://lab.nexedi.com/kirr/pygolang/commit/9efb6575
__ https://lab.nexedi.com/kirr/pygolang/commit/3b241983
- Provide way to install Pygolang with extra requirements in the form of
`pygolang[<package>]`. For example `pygolang[x.perf.benchlib]` additionally
selects NumPy, `pygolang[pyx.build]` - everything needed by build system, and
`pygolang[all]` selects everything (commit__).
__ https://lab.nexedi.com/kirr/pygolang/commit/89a1061a
- Improve tests to exercise the implementation more thoroughly in many
places (`commit 1`__, 2__, 3__, 4__, 5__, 6__).
__ https://lab.nexedi.com/kirr/pygolang/commit/773d8fb2
__ https://lab.nexedi.com/kirr/pygolang/commit/3e5b5f01
__ https://lab.nexedi.com/kirr/pygolang/commit/7f2362dd
__ https://lab.nexedi.com/kirr/pygolang/commit/c5810987
__ https://lab.nexedi.com/kirr/pygolang/commit/cb5bfdd2
__ https://lab.nexedi.com/kirr/pygolang/commit/02f6991f
- Fix race bugs in buffered channel send and receive (`commit 1`__, 2__).
__ https://lab.nexedi.com/kirr/pygolang/commit/eb8a1fef
__ https://lab.nexedi.com/kirr/pygolang/commit/c6bb9eb3
- Fix deadlock in `sync.WorkGroup` tests (commit__).
__ https://lab.nexedi.com/kirr/pygolang/commit/b8b042c5
- Fix `@func(cls) def name` not to override `name` in calling context (commit__).
__ https://lab.nexedi.com/kirr/pygolang/commit/924a808c
- Fix `sync.WorkGroup` to propagate all exception types, not only those derived
from `Exception` (commit__).
__ https://lab.nexedi.com/kirr/pygolang/commit/79aab7df
- Replace `threading.Event` with `chan` in `sync.WorkGroup` implementation.
This removes reliance on outside semaphore+waitlist code and speeds up
`sync.WorkGroup` along the way (commit__).
__ https://lab.nexedi.com/kirr/pygolang/commit/78d85cdc
- Speedup `sync.WorkGroup` by not using `@func` at runtime (commit__).
__ https://lab.nexedi.com/kirr/pygolang/commit/94c6160b
- Add benchmarks for `chan`, `select`, `@func` and `defer` (commit__).
__ https://lab.nexedi.com/kirr/pygolang/commit/3c55ca59
.. readme_renderer/pypi don't support `.. class:: align-center`
.. |_| unicode:: 0xA0 .. nbsp
|_| |_| |_| |_| |_| |_| |_| |_| *This release is dedicated to the memory of* |Вера Павловна Супрун|_.
.. |Вера Павловна Супрун| replace:: *Вера Павловна Супрун*
.. _Вера Павловна Супрун: https://navytux.spb.ru/memory/%D0%A2%D1%91%D1%82%D1%8F%20%D0%92%D0%B5%D1%80%D0%B0.pdf#page=3
0.0.2 (2019-05-16) 0.0.2 (2019-05-16)
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
......
...@@ -21,6 +21,11 @@ between Python/Cython and Go environments. ...@@ -21,6 +21,11 @@ between Python/Cython and Go environments.
__ `Additional packages and utilities`_ __ `Additional packages and utilities`_
.. contents::
:depth: 1
GPython GPython
------- -------
...@@ -148,6 +153,7 @@ practically natively modelled with `try`/`except`. ...@@ -148,6 +153,7 @@ practically natively modelled with `try`/`except`.
If `defer` is used, the function that uses it must be wrapped with `@func` If `defer` is used, the function that uses it must be wrapped with `@func`
decorator. decorator.
Import Import
------ ------
...@@ -288,7 +294,7 @@ handle concurrency in structured ways: ...@@ -288,7 +294,7 @@ handle concurrency in structured ways:
- `golang.time` provides timers integrated with channels. - `golang.time` provides timers integrated with channels.
.. [*] See `Go Concurrency Patterns: Context`__ for overview of contexts. .. [*] See `Go Concurrency Patterns: Context`__ for overview.
__ https://blog.golang.org/context __ https://blog.golang.org/context
......
...@@ -31,7 +31,7 @@ See also package golang.pyx which provides similar functionality for Cython nogi ...@@ -31,7 +31,7 @@ See also package golang.pyx which provides similar functionality for Cython nogi
from __future__ import print_function, absolute_import from __future__ import print_function, absolute_import
__version__ = "0.0.2" __version__ = "0.0.3"
__all__ = ['go', 'chan', 'select', 'default', 'nilchan', 'defer', 'panic', 'recover', 'func', 'gimport'] __all__ = ['go', 'chan', 'select', 'default', 'nilchan', 'defer', 'panic', 'recover', 'func', 'gimport']
......
...@@ -182,6 +182,11 @@ setup( ...@@ -182,6 +182,11 @@ setup(
readfile('README.rst'), readfile('CHANGELOG.rst')), readfile('README.rst'), readfile('CHANGELOG.rst')),
long_description_content_type = 'text/x-rst', long_description_content_type = 'text/x-rst',
url = 'https://lab.nexedi.com/kirr/pygolang', url = 'https://lab.nexedi.com/kirr/pygolang',
project_urls= {
'Bug Tracker': 'https://lab.nexedi.com/kirr/pygolang/issues',
'Source Code': 'https://lab.nexedi.com/kirr/pygolang',
'Documentation': 'https://pypi.org/project/pygolang',
},
license = 'GPLv3+ with wide exception for Open-Source', license = 'GPLv3+ with wide exception for Open-Source',
author = 'Kirill Smelkov', author = 'Kirill Smelkov',
author_email= 'kirr@nexedi.com', author_email= 'kirr@nexedi.com',
...@@ -237,6 +242,8 @@ setup( ...@@ -237,6 +242,8 @@ setup(
classifiers = [_.strip() for _ in """\ classifiers = [_.strip() for _ in """\
Development Status :: 3 - Alpha Development Status :: 3 - Alpha
Intended Audience :: Developers Intended Audience :: Developers
Programming Language :: Python
Programming Language :: Cython
Programming Language :: Python :: 2 Programming Language :: Python :: 2
Programming Language :: Python :: 2.7 Programming Language :: Python :: 2.7
Programming Language :: Python :: 3 Programming Language :: Python :: 3
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment