Pygolang change history ----------------------- 0.0.7 (2020-09-22) ~~~~~~~~~~~~~~~~~~ - Add way to run `gpython` with either gevent or threads runtime. This allows `gpython` usage without forcing projects to switch from threads to greenlets (`commit 1`__, 2__, 3__). __ https://lab.nexedi.com/nexedi/pygolang/commit/0e3da017 __ https://lab.nexedi.com/nexedi/pygolang/commit/c0282565 __ https://lab.nexedi.com/nexedi/pygolang/commit/a6b993c8 - Fix `gpython` to be more compatible with CPython on command line handling (`commit 1`__, 2__, 3__, 4__, 5__, 6__, 7__). __ https://lab.nexedi.com/nexedi/pygolang/commit/e6714e49 __ https://lab.nexedi.com/nexedi/pygolang/commit/70c4c82f __ https://lab.nexedi.com/nexedi/pygolang/commit/b47edf42 __ https://lab.nexedi.com/nexedi/pygolang/commit/a0016938 __ https://lab.nexedi.com/nexedi/pygolang/commit/51925488 __ https://lab.nexedi.com/nexedi/pygolang/commit/1f6f31cd __ https://lab.nexedi.com/nexedi/pygolang/commit/fb98e594 - Teach `qq` to be usable with both `bytes` and `str` format whatever type `qq`'s argument is (`commit 1`__, 2__). __ https://lab.nexedi.com/nexedi/pygolang/commit/85a1765d __ https://lab.nexedi.com/nexedi/pygolang/commit/edc7aaab - Teach `recover` to always return exception with `.__traceback__` set even on Python2 (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/cfcc6db2 - Fix `pyx.build` for develop install (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/34b9c0cf - Fix `pyx.build` on macOS (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/fb662979 - Add tests for IPython and Pytest integration patches (`commit 1`__, 2__, 3__, 4__, 5__, 6__, 7__). __ https://lab.nexedi.com/nexedi/pygolang/commit/0148cb89 __ https://lab.nexedi.com/nexedi/pygolang/commit/2413b5ba __ https://lab.nexedi.com/nexedi/pygolang/commit/42ab98a6 __ https://lab.nexedi.com/nexedi/pygolang/commit/09629367 __ https://lab.nexedi.com/nexedi/pygolang/commit/6e31304d __ https://lab.nexedi.com/nexedi/pygolang/commit/b938af8b __ https://lab.nexedi.com/nexedi/pygolang/commit/a1ac2a45 - Add support for Python38 (`commit 1`__, 2__). __ https://lab.nexedi.com/nexedi/pygolang/commit/792cbd6c __ https://lab.nexedi.com/nexedi/pygolang/commit/1f184095 - Fix ThreadSanitizer/AddressSanitizer support on upcoming Debian 11 (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/49bb8dcd | |_| |_| |_| |_| |_| |_| |_| |_| *By this release Pygolang was included into* |Nexedi Software Stack|_. .. |Nexedi Software Stack| replace:: *Nexedi Software Stack* .. _Nexedi Software Stack: https://stack.nexedi.com 0.0.6 (2020-02-28) ~~~~~~~~~~~~~~~~~~ - Provide support for error chaining. In concurrent systems operational stack generally differs from execution code flow, which makes code stack traces significantly less useful to understand an error. Error chaining gives ability to build operational error stack and to inspect resulting errors. (`commit 1`__, 2__, 3__, 4__, 5__, 6__, `overview 1`__, `overview 2`__). __ https://lab.nexedi.com/nexedi/pygolang/commit/fd95c88a __ https://lab.nexedi.com/nexedi/pygolang/commit/17798442 __ https://lab.nexedi.com/nexedi/pygolang/commit/78d0c76f __ https://lab.nexedi.com/nexedi/pygolang/commit/337de0d7 __ https://lab.nexedi.com/nexedi/pygolang/commit/03f88c0b __ https://lab.nexedi.com/nexedi/pygolang/commit/80ab5863 __ https://blog.golang.org/go1.13-errors __ https://commandcenter.blogspot.com/2017/12/error-handling-in-upspin.html - Provide `unicode` ↔ `bytes` conversion: `b(obj)` converts str/unicode/bytes obj to UTF-8 encoded bytestring, while `u(obj)` converts str/unicode/bytes obj to unicode string. The conversion in both encoding and decoding never fails and never looses information: `b(u(·))` and `u(b(·))` are always identity for bytes and unicode correspondingly, even if bytes input is not valid UTF-8. (`commit 1`__, 2__, 3__, 4__, 5__, 6__, 7__). __ https://lab.nexedi.com/nexedi/pygolang/commit/bcb95cd5 __ https://lab.nexedi.com/nexedi/pygolang/commit/073d81a8 __ https://lab.nexedi.com/nexedi/pygolang/commit/5cc679ac __ https://lab.nexedi.com/nexedi/pygolang/commit/0561926a __ https://lab.nexedi.com/nexedi/pygolang/commit/8c459a99 __ https://lab.nexedi.com/nexedi/pygolang/commit/3073ac98 __ https://lab.nexedi.com/nexedi/pygolang/commit/e028cf28 - Provide `sync.RWMutex` (`commit 1`__, 2__). __ https://lab.nexedi.com/nexedi/pygolang/commit/1ad3c2d5 __ https://lab.nexedi.com/nexedi/pygolang/commit/a9345a98 - Provide `nil` as alias for `nullptr` and NULL (`commit 1`__, 2__, 3__, 4__). __ https://lab.nexedi.com/nexedi/pygolang/commit/60f6db6f __ https://lab.nexedi.com/nexedi/pygolang/commit/fc1c3e24 __ https://lab.nexedi.com/nexedi/pygolang/commit/01ade7ac __ https://lab.nexedi.com/nexedi/pygolang/commit/230c81c4 - Add `io` package with `io.EOF` and `io.ErrUnexpectedEOF` (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/36ab859c - Correct `cxx.dict` API to follow libgolang comma-ok style (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/58fcdd87 - Provide `pyx.build.DSO` for projects to build dynamic libraries that use/link-to libgolang (`commit 1`__, 2__). __ https://lab.nexedi.com/nexedi/pygolang/commit/64765688 __ https://lab.nexedi.com/nexedi/pygolang/commit/cd67996e - Fix `pyx.build.build_ext` to allow customization (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/8af78fc5 | |_| |_| |_| |_| |_| |_| |_| |_| *This release is driven by* |wendelin.core|_ *v2 needs*. 0.0.5 (2019-11-27) ~~~~~~~~~~~~~~~~~~ - Add support for typed Python channels. For example `chan(dtype='C.int')` creates channel whose elements type is C `int` instead of Python object. Besides providing runtime type-safety, this allows to build interaction in between Python and nogil worlds (`commit 1`__, 2__, 3__, 4__, 5__, 6__, 7__, 8__, 9__, 10__, 11__). __ https://lab.nexedi.com/nexedi/pygolang/commit/f2847307 __ https://lab.nexedi.com/nexedi/pygolang/commit/d6c8862d __ https://lab.nexedi.com/nexedi/pygolang/commit/2590e9a7 __ https://lab.nexedi.com/nexedi/pygolang/commit/47111d3e __ https://lab.nexedi.com/nexedi/pygolang/commit/30561db4 __ https://lab.nexedi.com/nexedi/pygolang/commit/f6fab7b5 __ https://lab.nexedi.com/nexedi/pygolang/commit/2c8063f4 __ https://lab.nexedi.com/nexedi/pygolang/commit/3121b290 __ https://lab.nexedi.com/nexedi/pygolang/commit/77719d8a __ https://lab.nexedi.com/nexedi/pygolang/commit/69b80926 __ https://lab.nexedi.com/nexedi/pygolang/commit/07f9430d - Provide automatic memory management for C++/Cython/nogil classes. Used approach complements `"Automatic multithreaded-safe memory managed classes in Cython"` (Gwenaël Samain et al. 2019, `blog post`__) (`commit 1`__, 2__, 3__, 4__, 5__, 6__, 7__). __ https://www.nexedi.com/blog/NXD-Document.Blog.Cypclass __ https://lab.nexedi.com/nexedi/pygolang/commit/e82b4fab __ https://lab.nexedi.com/nexedi/pygolang/commit/e614d641 __ https://lab.nexedi.com/nexedi/pygolang/commit/af4a8d80 __ https://lab.nexedi.com/nexedi/pygolang/commit/b2253abf __ https://lab.nexedi.com/nexedi/pygolang/commit/274afa3f __ https://lab.nexedi.com/nexedi/pygolang/commit/fd2a6fab __ https://lab.nexedi.com/nexedi/pygolang/commit/7f0672aa - Provide minimal support for interfaces with empty and `error` interfaces provided by base library (`commit 1`__, 2__). __ https://lab.nexedi.com/nexedi/pygolang/commit/5a99b769 __ https://lab.nexedi.com/nexedi/pygolang/commit/45c8cddd - Provide `sync.Mutex` and `sync.Sema` as part of both Python and Cython/nogil API (`commit 1`__, 2__, 3__, 4__, 5__, 6__). __ https://lab.nexedi.com/nexedi/pygolang/commit/d99bb6b7 __ https://lab.nexedi.com/nexedi/pygolang/commit/9c795ca7 __ https://lab.nexedi.com/nexedi/pygolang/commit/34b7a1f4 __ https://lab.nexedi.com/nexedi/pygolang/commit/2c1be15e __ https://lab.nexedi.com/nexedi/pygolang/commit/e6788170 __ https://lab.nexedi.com/nexedi/pygolang/commit/548f2df1 - Provide C++/Cython/nogil API for `time` package. Python-level `time` becomes a small wrapper around Cython/nogil one (`commit 1`__, 2__, 3__, 4__, 5__, 6__, 7__, 8__, 9__, 10__, 11__, 12__, 13__, 14__). __ https://lab.nexedi.com/nexedi/pygolang/commit/32f34607 __ https://lab.nexedi.com/nexedi/pygolang/commit/0e838833 __ https://lab.nexedi.com/nexedi/pygolang/commit/106c1b95 __ https://lab.nexedi.com/nexedi/pygolang/commit/4f6a9e09 __ https://lab.nexedi.com/nexedi/pygolang/commit/7c929b25 __ https://lab.nexedi.com/nexedi/pygolang/commit/8c2ac5e9 __ https://lab.nexedi.com/nexedi/pygolang/commit/a0ba1226 __ https://lab.nexedi.com/nexedi/pygolang/commit/873cf8aa __ https://lab.nexedi.com/nexedi/pygolang/commit/8399ff2d __ https://lab.nexedi.com/nexedi/pygolang/commit/419c8950 __ https://lab.nexedi.com/nexedi/pygolang/commit/1a9dae3b __ https://lab.nexedi.com/nexedi/pygolang/commit/b073f6df __ https://lab.nexedi.com/nexedi/pygolang/commit/0e6088ec __ https://lab.nexedi.com/nexedi/pygolang/commit/73182038 - Provide C++/Cython/nogil API for `context` package. Python-level `context` becomes a small wrapper around Cython/nogil one (`commit 1`__, 2__, 3__, 4__, 5__, 6__, 7__, 8__, 9__, 10__, 11__, 12__, 13__, 14__, 15__). __ https://lab.nexedi.com/nexedi/pygolang/commit/149ae661 __ https://lab.nexedi.com/nexedi/pygolang/commit/cc7069e0 __ https://lab.nexedi.com/nexedi/pygolang/commit/223d7950 __ https://lab.nexedi.com/nexedi/pygolang/commit/89381488 __ https://lab.nexedi.com/nexedi/pygolang/commit/9662785b __ https://lab.nexedi.com/nexedi/pygolang/commit/34e3c404 __ https://lab.nexedi.com/nexedi/pygolang/commit/ba2ab242 __ https://lab.nexedi.com/nexedi/pygolang/commit/9869dc45 __ https://lab.nexedi.com/nexedi/pygolang/commit/20761c55 __ https://lab.nexedi.com/nexedi/pygolang/commit/f76c11f3 __ https://lab.nexedi.com/nexedi/pygolang/commit/281defb2 __ https://lab.nexedi.com/nexedi/pygolang/commit/66e1e756 __ https://lab.nexedi.com/nexedi/pygolang/commit/9216e2db __ https://lab.nexedi.com/nexedi/pygolang/commit/2a359791 __ https://lab.nexedi.com/nexedi/pygolang/commit/a6c1c984 - Provide C++/Cython/nogil API for `sync` package. Python-level `sync` becomes a small wrapper around Cython/nogil one (`commit 1`__, 2__, 3__, 4__, 5__, 6__, 7__, 8__, 9__). __ https://lab.nexedi.com/nexedi/pygolang/commit/0fb53e33 __ https://lab.nexedi.com/nexedi/pygolang/commit/b316e504 __ https://lab.nexedi.com/nexedi/pygolang/commit/c5c576d2 __ https://lab.nexedi.com/nexedi/pygolang/commit/5146a416 __ https://lab.nexedi.com/nexedi/pygolang/commit/4fc6e49c __ https://lab.nexedi.com/nexedi/pygolang/commit/a36efe6d __ https://lab.nexedi.com/nexedi/pygolang/commit/4fb9b51c __ https://lab.nexedi.com/nexedi/pygolang/commit/33cf3113 __ https://lab.nexedi.com/nexedi/pygolang/commit/6d94fccf - Add `errors` package with `errors.New` to create new error with provided text (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/a245ab56 - Add `fmt` package with `fmt.sprintf` and `fmt.errorf` to format text into strings and errors (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/309963f8 - Add `strings` package with utilities like `strings.has_prefix`, `strings.split` and similar (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/0efd4a9a - Add `cxx` package with `cxx.dict` and `cxx.set` providing ergonomic interface over STL hash map and set (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/9785f2d3 - Teach `defer` to chain exceptions (PEP 3134) and adjust traceback dumps to include exception cause/context even on Python2 (`commit 1`__, 2__, 3__, 4__, 5__). __ https://lab.nexedi.com/nexedi/pygolang/commit/6729fe92 __ https://lab.nexedi.com/nexedi/pygolang/commit/bb9a94c3 __ https://lab.nexedi.com/nexedi/pygolang/commit/7faaecbc __ https://lab.nexedi.com/nexedi/pygolang/commit/06cac90b __ https://lab.nexedi.com/nexedi/pygolang/commit/1477dd02 - Provide `defer` as part of C++ API too (`commit 1`__, 2__, 3__). __ https://lab.nexedi.com/nexedi/pygolang/commit/1d153a45 __ https://lab.nexedi.com/nexedi/pygolang/commit/14a249cb __ https://lab.nexedi.com/nexedi/pygolang/commit/39f40159 - Provide `build_ext` as part of `pyx.build` package API. This allows projects to customize the way their Pygolang-based extensions are built (`commit 1`__, 2__). __ https://lab.nexedi.com/nexedi/pygolang/commit/8f9e5619 __ https://lab.nexedi.com/nexedi/pygolang/commit/b4feee6f - Fix `recover` to clean current exception (`commit 1`__, 2__). __ https://lab.nexedi.com/nexedi/pygolang/commit/9e6ff8bd __ https://lab.nexedi.com/nexedi/pygolang/commit/5f76f363 - Fix `select` to not leak object reference on error path (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/e9180de1 - Fix gevent runtime to preserve Python exception state during runtime calls (`commit 1`__, 2__). __ https://lab.nexedi.com/nexedi/pygolang/commit/689dc862 __ https://lab.nexedi.com/nexedi/pygolang/commit/47fac0a9 | |_| |_| |_| |_| |_| |_| |_| |_| *This release is driven by* |wendelin.core|_ *v2 needs*. | |_| |_| |_| |_| |_| |_| |_| |_| *This release is dedicated to the memory of* |Бася|_. .. |wendelin.core| replace:: *wendelin.core* .. _wendelin.core: https://pypi.org/project/wendelin.core .. |Бася| replace:: *Бася* .. _Бася: https://navytux.spb.ru/memory/%D0%91%D0%B0%D1%81%D1%8F/ 0.0.4 (2019-09-17) ~~~~~~~~~~~~~~~~~~ - Add ThreadSanitizer, AddressSanitizer and Python debug builds to testing coverage (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/4dc1a7f0 - Fix race bugs in `close`, `recv` and `select` (`commit 1`__, 2__, 3__, 4__, 5__, 6__). A 25-years old race condition in Python was also discovered while doing quality assurance on concurrency (`commit 7`__, `Python bug`__, `PyPy bug`__). __ https://lab.nexedi.com/nexedi/pygolang/commit/78e38690 __ https://lab.nexedi.com/nexedi/pygolang/commit/44737253 __ https://lab.nexedi.com/nexedi/pygolang/commit/c92a4830 __ https://lab.nexedi.com/nexedi/pygolang/commit/dcf4ebd1 __ https://lab.nexedi.com/nexedi/pygolang/commit/65c43848 __ https://lab.nexedi.com/nexedi/pygolang/commit/5aa1e899 __ https://lab.nexedi.com/nexedi/pygolang/commit/5142460d __ https://bugs.python.org/issue38106 __ https://bitbucket.org/pypy/pypy/issues/3072 - If C-level panic causes termination, its argument is now printed (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/f2b77c94 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/nexedi/pygolang/commit/d98e42e3 __ https://lab.nexedi.com/nexedi/pygolang/commit/352628b5 __ https://lab.nexedi.com/nexedi/pygolang/commit/fa667412 __ https://lab.nexedi.com/nexedi/pygolang/commit/f812faa2 __ https://lab.nexedi.com/nexedi/pygolang/commit/88eb8fe0 __ https://lab.nexedi.com/nexedi/pygolang/commit/62bdb806 __ https://lab.nexedi.com/nexedi/pygolang/commit/8fa3c15b __ https://lab.nexedi.com/nexedi/pygolang/commit/ad00be70 __ https://lab.nexedi.com/nexedi/pygolang/commit/ce8152a2 __ https://lab.nexedi.com/nexedi/pygolang/commit/7ae8c4f3 __ https://lab.nexedi.com/nexedi/pygolang/commit/f971a2a8 __ https://lab.nexedi.com/nexedi/pygolang/commit/83259a1b __ https://lab.nexedi.com/nexedi/pygolang/commit/311df9f1 __ https://lab.nexedi.com/nexedi/pygolang/commit/7e55394d __ https://lab.nexedi.com/nexedi/pygolang/commit/790189e3 __ https://lab.nexedi.com/nexedi/pygolang/commit/a508be9a __ https://lab.nexedi.com/nexedi/pygolang/commit/a0714b8e __ https://lab.nexedi.com/nexedi/pygolang/commit/1bcb8297 __ https://lab.nexedi.com/nexedi/pygolang/commit/ef076d3a __ https://lab.nexedi.com/nexedi/pygolang/commit/4166dc65 __ https://lab.nexedi.com/nexedi/pygolang/commit/b9333e00 __ https://lab.nexedi.com/nexedi/pygolang/commit/d5e74947 __ https://lab.nexedi.com/nexedi/pygolang/commit/2fc71566 __ https://lab.nexedi.com/nexedi/pygolang/commit/e4dddf15 __ https://lab.nexedi.com/nexedi/pygolang/commit/69db91bf __ https://lab.nexedi.com/nexedi/pygolang/commit/9efb6575 __ https://lab.nexedi.com/nexedi/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/nexedi/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/nexedi/pygolang/commit/773d8fb2 __ https://lab.nexedi.com/nexedi/pygolang/commit/3e5b5f01 __ https://lab.nexedi.com/nexedi/pygolang/commit/7f2362dd __ https://lab.nexedi.com/nexedi/pygolang/commit/c5810987 __ https://lab.nexedi.com/nexedi/pygolang/commit/cb5bfdd2 __ https://lab.nexedi.com/nexedi/pygolang/commit/02f6991f - Fix race bugs in buffered channel send and receive (`commit 1`__, 2__). __ https://lab.nexedi.com/nexedi/pygolang/commit/eb8a1fef __ https://lab.nexedi.com/nexedi/pygolang/commit/c6bb9eb3 - Fix deadlock in `sync.WorkGroup` tests (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/b8b042c5 - Fix `@func(cls) def name` not to override `name` in calling context (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/924a808c - Fix `sync.WorkGroup` to propagate all exception types, not only those derived from `Exception` (commit__). __ https://lab.nexedi.com/nexedi/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/nexedi/pygolang/commit/78d85cdc - Speedup `sync.WorkGroup` by not using `@func` at runtime (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/94c6160b - Add benchmarks for `chan`, `select`, `@func` and `defer` (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/3c55ca59 |_| |_| |_| |_| |_| |_| |_| |_| *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) ~~~~~~~~~~~~~~~~~~ - Add `time` package with `time.Timer` and `time.Ticker` (`commit 1`__, 2__, 3__). __ https://lab.nexedi.com/nexedi/pygolang/commit/81dfefa0 __ https://lab.nexedi.com/nexedi/pygolang/commit/6e3b3ff4 __ https://lab.nexedi.com/nexedi/pygolang/commit/9c260fde - Add support for deadlines and timeouts to `context` package (`commit 1`__, 2__, 3__, 4__). __ https://lab.nexedi.com/nexedi/pygolang/commit/58ba1765 __ https://lab.nexedi.com/nexedi/pygolang/commit/e5687f2f __ https://lab.nexedi.com/nexedi/pygolang/commit/27f91b78 __ https://lab.nexedi.com/nexedi/pygolang/commit/b2450310 0.0.1 (2019-05-09) ~~~~~~~~~~~~~~~~~~ - Add support for nil channels (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/2aad64bb - Add `context` package to propagate cancellation and task-scoped values among spawned goroutines (commit__, `overview`__). __ https://lab.nexedi.com/nexedi/pygolang/commit/e9567c7b __ https://blog.golang.org/context - Add `sync` package with `sync.WorkGroup` to spawn group of goroutines working on a common task (`commit 1`__, 2__). __ https://lab.nexedi.com/nexedi/pygolang/commit/e6bea2cf __ https://lab.nexedi.com/nexedi/pygolang/commit/9ee7ba91 - Remove deprecated `@method` (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/262f8986 0.0.0.dev8 (2019-03-24) ~~~~~~~~~~~~~~~~~~~~~~~ - Fix `gpython` to properly initialize `sys.path` (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/6b4990f6 - Fix channel tests to pass irregardless of surround OS load (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/731f39e3 - Deprecate `@method(cls)` in favour of `@func(cls)` (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/942ee900 - Support both `PyPy2` and `PyPy3` (`commit 1`__, 2__, 3__). __ https://lab.nexedi.com/nexedi/pygolang/commit/da68a8ae __ https://lab.nexedi.com/nexedi/pygolang/commit/e847c550 __ https://lab.nexedi.com/nexedi/pygolang/commit/704d99f0 0.0.0.dev7 (2019-01-16) ~~~~~~~~~~~~~~~~~~~~~~~ - Provide `gpython` interpreter, that sets UTF-8 as default encoding, integrates gevent and puts `go`, `chan`, `select` etc into builtin namespace (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/32a21d5b 0.0.0.dev6 (2018-12-13) ~~~~~~~~~~~~~~~~~~~~~~~ - Add `strconv` package with `quote` and `unquote` (`commit 1`__, 2__). __ https://lab.nexedi.com/nexedi/pygolang/commit/f09701b0 __ https://lab.nexedi.com/nexedi/pygolang/commit/ed6b7895 - Support `PyPy` as well (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/c859940b 0.0.0.dev5 (2018-10-30) ~~~~~~~~~~~~~~~~~~~~~~~ - Fix `select` bug that was causing several cases to be potentially executed at the same time (`commit 1`__, 2__, 3__). __ https://lab.nexedi.com/nexedi/pygolang/commit/f0b592b4 __ https://lab.nexedi.com/nexedi/pygolang/commit/b51b8d5d __ https://lab.nexedi.com/nexedi/pygolang/commit/2fc6797c - Add `defer` and `recover` (commit__). The implementation is partly inspired by work of Denis Kolodin (1__, 2__). __ https://lab.nexedi.com/nexedi/pygolang/commit/5146eb0b __ https://habr.com/post/191786 __ https://stackoverflow.com/a/43028386/9456786 - Fix `@method` on Python3 (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/ab69e0fa - A leaked goroutine no longer prevents whole program to exit (`commit 1`__, 2__). __ https://lab.nexedi.com/nexedi/pygolang/commit/69cef96e __ https://lab.nexedi.com/nexedi/pygolang/commit/ec929991 0.0.0.dev4 (2018-07-04) ~~~~~~~~~~~~~~~~~~~~~~~ - Add `py.bench` program and `golang.testing` package with corresponding bits (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/9bf03d9c 0.0.0.dev3 (2018-07-02) ~~~~~~~~~~~~~~~~~~~~~~~ - Support both Python2 and Python3; `qq` now does not escape printable UTF-8 characters. (`commit 1`__, 2__, 3__). __ https://lab.nexedi.com/nexedi/pygolang/commit/02dddb97 __ https://lab.nexedi.com/nexedi/pygolang/commit/e01e5c2f __ https://lab.nexedi.com/nexedi/pygolang/commit/622ccd82 - `golang/x/perf/benchlib:` New module to load & work with data in Go benchmark format (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/812e7ed7 0.0.0.dev2 (2018-06-20) ~~~~~~~~~~~~~~~~~~~~~~~ - Turn into full pygolang: `go`, `chan`, `select`, `method` and `gcompat.qq` are provided in addition to `gimport` (commit__). The implementation is not very fast, but should be working correctly including `select` - `select` sends for synchronous channels. __ https://lab.nexedi.com/nexedi/pygolang/commit/afa46cf5 0.0.0.dev1 (2018-05-21) ~~~~~~~~~~~~~~~~~~~~~~~ - Initial release; `gimport` functionality only (commit__). __ https://lab.nexedi.com/nexedi/pygolang/commit/9c61f254 .. readme_renderer/pypi don't support `.. class:: align-center` .. |_| unicode:: 0xA0 .. nbsp