CHANGELOG.rst 23.9 KB
Newer Older
Kirill Smelkov's avatar
Kirill Smelkov committed
1
Pygolang change history
Kirill Smelkov's avatar
Kirill Smelkov committed
2
-----------------------
Kirill Smelkov's avatar
Kirill Smelkov committed
3

Kirill Smelkov's avatar
Kirill Smelkov committed
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
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


Kirill Smelkov's avatar
Kirill Smelkov committed
72 73 74 75 76 77 78 79 80 81
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`__).

82 83 84 85 86 87
  __ 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
Kirill Smelkov's avatar
Kirill Smelkov committed
88 89 90 91 92 93 94 95 96 97 98
  __ 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__).

99 100 101 102 103 104 105
  __ 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
Kirill Smelkov's avatar
Kirill Smelkov committed
106 107 108

- Provide `sync.RWMutex` (`commit 1`__, 2__).

109 110
  __ https://lab.nexedi.com/nexedi/pygolang/commit/1ad3c2d5
  __ https://lab.nexedi.com/nexedi/pygolang/commit/a9345a98
Kirill Smelkov's avatar
Kirill Smelkov committed
111 112 113

- Provide `nil` as alias for `nullptr` and NULL (`commit 1`__, 2__, 3__, 4__).

114 115 116 117
  __ 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
Kirill Smelkov's avatar
Kirill Smelkov committed
118 119 120

- Add `io` package with `io.EOF` and `io.ErrUnexpectedEOF` (commit__).

121
  __ https://lab.nexedi.com/nexedi/pygolang/commit/36ab859c
Kirill Smelkov's avatar
Kirill Smelkov committed
122 123 124

- Correct `cxx.dict` API to follow libgolang comma-ok style (commit__).

125
  __ https://lab.nexedi.com/nexedi/pygolang/commit/58fcdd87
Kirill Smelkov's avatar
Kirill Smelkov committed
126 127 128 129

- Provide `pyx.build.DSO` for projects to build dynamic libraries that
  use/link-to libgolang (`commit 1`__, 2__).

130 131
  __ https://lab.nexedi.com/nexedi/pygolang/commit/64765688
  __ https://lab.nexedi.com/nexedi/pygolang/commit/cd67996e
Kirill Smelkov's avatar
Kirill Smelkov committed
132 133 134

- Fix `pyx.build.build_ext` to allow customization (commit__).

135
  __ https://lab.nexedi.com/nexedi/pygolang/commit/8af78fc5
Kirill Smelkov's avatar
Kirill Smelkov committed
136 137 138 139

| |_| |_| |_| |_| |_| |_| |_| |_| *This release is driven by* |wendelin.core|_ *v2 needs*.


Kirill Smelkov's avatar
Kirill Smelkov committed
140 141 142 143 144 145 146 147 148
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__).

149 150 151 152 153 154 155 156 157 158 159
  __ 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
Kirill Smelkov's avatar
Kirill Smelkov committed
160 161 162 163 164 165 166

- 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
167 168 169 170 171 172 173
  __ 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
Kirill Smelkov's avatar
Kirill Smelkov committed
174 175 176 177

- Provide minimal support for interfaces with empty and `error` interfaces
  provided by base library (`commit 1`__, 2__).

178 179
  __ https://lab.nexedi.com/nexedi/pygolang/commit/5a99b769
  __ https://lab.nexedi.com/nexedi/pygolang/commit/45c8cddd
Kirill Smelkov's avatar
Kirill Smelkov committed
180 181 182 183

- Provide `sync.Mutex` and `sync.Sema` as part of both Python and Cython/nogil
  API (`commit 1`__, 2__, 3__, 4__, 5__, 6__).

184 185 186 187 188 189
  __ 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
Kirill Smelkov's avatar
Kirill Smelkov committed
190 191 192 193 194

- 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__).

195 196 197 198 199 200 201 202 203 204 205 206 207 208
  __ 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
Kirill Smelkov's avatar
Kirill Smelkov committed
209 210 211 212 213

- 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__).

214 215 216 217 218 219 220 221 222 223 224 225 226 227 228
  __ 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
Kirill Smelkov's avatar
Kirill Smelkov committed
229 230 231 232

- 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__).

233 234 235 236 237 238 239 240 241
  __ 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
Kirill Smelkov's avatar
Kirill Smelkov committed
242 243 244

- Add `errors` package with `errors.New` to create new error with provided text (commit__).

245
  __ https://lab.nexedi.com/nexedi/pygolang/commit/a245ab56
Kirill Smelkov's avatar
Kirill Smelkov committed
246 247 248 249

- Add `fmt` package with `fmt.sprintf` and `fmt.errorf` to format text into
  strings and errors (commit__).

250
  __ https://lab.nexedi.com/nexedi/pygolang/commit/309963f8
Kirill Smelkov's avatar
Kirill Smelkov committed
251 252 253 254

- Add `strings` package with utilities like `strings.has_prefix`,
  `strings.split` and similar (commit__).

255
  __ https://lab.nexedi.com/nexedi/pygolang/commit/0efd4a9a
Kirill Smelkov's avatar
Kirill Smelkov committed
256 257 258 259

- Add `cxx` package with `cxx.dict` and `cxx.set` providing ergonomic interface
  over STL hash map and set (commit__).

260
  __ https://lab.nexedi.com/nexedi/pygolang/commit/9785f2d3
Kirill Smelkov's avatar
Kirill Smelkov committed
261 262 263 264

- 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__).

265 266 267 268 269
  __ 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
Kirill Smelkov's avatar
Kirill Smelkov committed
270 271 272

- Provide `defer` as part of C++ API too (`commit 1`__, 2__, 3__).

273 274 275
  __ https://lab.nexedi.com/nexedi/pygolang/commit/1d153a45
  __ https://lab.nexedi.com/nexedi/pygolang/commit/14a249cb
  __ https://lab.nexedi.com/nexedi/pygolang/commit/39f40159
Kirill Smelkov's avatar
Kirill Smelkov committed
276 277 278 279

- 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__).

280 281
  __ https://lab.nexedi.com/nexedi/pygolang/commit/8f9e5619
  __ https://lab.nexedi.com/nexedi/pygolang/commit/b4feee6f
Kirill Smelkov's avatar
Kirill Smelkov committed
282 283 284

- Fix `recover` to clean current exception (`commit 1`__, 2__).

285 286
  __ https://lab.nexedi.com/nexedi/pygolang/commit/9e6ff8bd
  __ https://lab.nexedi.com/nexedi/pygolang/commit/5f76f363
Kirill Smelkov's avatar
Kirill Smelkov committed
287 288 289

- Fix `select` to not leak object reference on error path (commit__).

290
  __ https://lab.nexedi.com/nexedi/pygolang/commit/e9180de1
Kirill Smelkov's avatar
Kirill Smelkov committed
291 292 293 294

- Fix gevent runtime to preserve Python exception state during runtime calls
  (`commit 1`__, 2__).

295 296
  __ https://lab.nexedi.com/nexedi/pygolang/commit/689dc862
  __ https://lab.nexedi.com/nexedi/pygolang/commit/47fac0a9
Kirill Smelkov's avatar
Kirill Smelkov committed
297 298 299 300 301 302 303 304 305 306 307


| |_| |_| |_| |_| |_| |_| |_| |_| *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/


Kirill Smelkov's avatar
Kirill Smelkov committed
308 309 310 311 312
0.0.4 (2019-09-17)
~~~~~~~~~~~~~~~~~~

- Add ThreadSanitizer, AddressSanitizer and Python debug builds to testing coverage (commit__).

313
  __ https://lab.nexedi.com/nexedi/pygolang/commit/4dc1a7f0
Kirill Smelkov's avatar
Kirill Smelkov committed
314 315 316 317 318

- 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`__).

319 320 321 322 323 324 325
  __ 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
Kirill Smelkov's avatar
Kirill Smelkov committed
326 327 328 329 330
  __ https://bugs.python.org/issue38106
  __ https://bitbucket.org/pypy/pypy/issues/3072

- If C-level panic causes termination, its argument is now printed (commit__).

331
  __ https://lab.nexedi.com/nexedi/pygolang/commit/f2b77c94
Kirill Smelkov's avatar
Kirill Smelkov committed
332 333


Kirill Smelkov's avatar
Kirill Smelkov committed
334 335 336 337 338 339 340 341 342 343 344 345 346 347 348
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
349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375
  __ 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
Kirill Smelkov's avatar
Kirill Smelkov committed
376 377 378 379 380 381 382


- 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__).

383
  __ https://lab.nexedi.com/nexedi/pygolang/commit/89a1061a
Kirill Smelkov's avatar
Kirill Smelkov committed
384 385 386 387

- Improve tests to exercise the implementation more thoroughly in many
  places (`commit 1`__, 2__, 3__, 4__, 5__, 6__).

388 389 390 391 392 393
  __ 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
Kirill Smelkov's avatar
Kirill Smelkov committed
394 395 396

- Fix race bugs in buffered channel send and receive (`commit 1`__, 2__).

397 398
  __ https://lab.nexedi.com/nexedi/pygolang/commit/eb8a1fef
  __ https://lab.nexedi.com/nexedi/pygolang/commit/c6bb9eb3
Kirill Smelkov's avatar
Kirill Smelkov committed
399 400 401

- Fix deadlock in `sync.WorkGroup` tests (commit__).

402
  __ https://lab.nexedi.com/nexedi/pygolang/commit/b8b042c5
Kirill Smelkov's avatar
Kirill Smelkov committed
403 404 405

- Fix `@func(cls) def name` not to override `name` in calling context (commit__).

406
  __ https://lab.nexedi.com/nexedi/pygolang/commit/924a808c
Kirill Smelkov's avatar
Kirill Smelkov committed
407 408 409 410

- Fix `sync.WorkGroup` to propagate all exception types, not only those derived
  from `Exception` (commit__).

411
  __ https://lab.nexedi.com/nexedi/pygolang/commit/79aab7df
Kirill Smelkov's avatar
Kirill Smelkov committed
412 413 414 415 416

- 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__).

417
  __ https://lab.nexedi.com/nexedi/pygolang/commit/78d85cdc
Kirill Smelkov's avatar
Kirill Smelkov committed
418 419 420

- Speedup `sync.WorkGroup` by not using `@func` at runtime (commit__).

421
  __ https://lab.nexedi.com/nexedi/pygolang/commit/94c6160b
Kirill Smelkov's avatar
Kirill Smelkov committed
422 423 424

- Add benchmarks for `chan`, `select`, `@func` and `defer` (commit__).

425
  __ https://lab.nexedi.com/nexedi/pygolang/commit/3c55ca59
Kirill Smelkov's avatar
Kirill Smelkov committed
426 427 428 429 430 431 432

|_| |_| |_| |_| |_| |_| |_| |_| *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


Kirill Smelkov's avatar
Kirill Smelkov committed
433 434 435 436 437
0.0.2 (2019-05-16)
~~~~~~~~~~~~~~~~~~

- Add `time` package with `time.Timer` and `time.Ticker` (`commit 1`__, 2__, 3__).

438 439 440
  __ https://lab.nexedi.com/nexedi/pygolang/commit/81dfefa0
  __ https://lab.nexedi.com/nexedi/pygolang/commit/6e3b3ff4
  __ https://lab.nexedi.com/nexedi/pygolang/commit/9c260fde
Kirill Smelkov's avatar
Kirill Smelkov committed
441 442 443

- Add support for deadlines and timeouts to `context` package (`commit 1`__, 2__, 3__, 4__).

444 445 446 447
  __ 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
Kirill Smelkov's avatar
Kirill Smelkov committed
448

Kirill Smelkov's avatar
Kirill Smelkov committed
449
0.0.1 (2019-05-09)
Kirill Smelkov's avatar
Kirill Smelkov committed
450
~~~~~~~~~~~~~~~~~~
Kirill Smelkov's avatar
Kirill Smelkov committed
451 452 453

- Add support for nil channels (commit__).

454
  __ https://lab.nexedi.com/nexedi/pygolang/commit/2aad64bb
Kirill Smelkov's avatar
Kirill Smelkov committed
455 456 457 458

- Add `context` package to propagate cancellation and task-scoped values among
  spawned goroutines (commit__, `overview`__).

459
  __ https://lab.nexedi.com/nexedi/pygolang/commit/e9567c7b
Kirill Smelkov's avatar
Kirill Smelkov committed
460 461 462 463 464
  __ https://blog.golang.org/context

- Add `sync` package with `sync.WorkGroup` to spawn group of goroutines working
  on a common task (`commit 1`__, 2__).

465 466
  __ https://lab.nexedi.com/nexedi/pygolang/commit/e6bea2cf
  __ https://lab.nexedi.com/nexedi/pygolang/commit/9ee7ba91
Kirill Smelkov's avatar
Kirill Smelkov committed
467

Kirill Smelkov's avatar
Kirill Smelkov committed
468
- Remove deprecated `@method` (commit__).
Kirill Smelkov's avatar
Kirill Smelkov committed
469

470
  __ https://lab.nexedi.com/nexedi/pygolang/commit/262f8986
Kirill Smelkov's avatar
Kirill Smelkov committed
471

Kirill Smelkov's avatar
Kirill Smelkov committed
472
0.0.0.dev8 (2019-03-24)
Kirill Smelkov's avatar
Kirill Smelkov committed
473
~~~~~~~~~~~~~~~~~~~~~~~
Kirill Smelkov's avatar
Kirill Smelkov committed
474 475 476

- Fix `gpython` to properly initialize `sys.path` (commit__).

477
  __ https://lab.nexedi.com/nexedi/pygolang/commit/6b4990f6
Kirill Smelkov's avatar
Kirill Smelkov committed
478 479 480

- Fix channel tests to pass irregardless of surround OS load (commit__).

481
  __ https://lab.nexedi.com/nexedi/pygolang/commit/731f39e3
Kirill Smelkov's avatar
Kirill Smelkov committed
482 483 484

- Deprecate `@method(cls)` in favour of `@func(cls)` (commit__).

485
  __ https://lab.nexedi.com/nexedi/pygolang/commit/942ee900
Kirill Smelkov's avatar
Kirill Smelkov committed
486 487 488

- Support both `PyPy2` and `PyPy3` (`commit 1`__, 2__, 3__).

489 490 491
  __ https://lab.nexedi.com/nexedi/pygolang/commit/da68a8ae
  __ https://lab.nexedi.com/nexedi/pygolang/commit/e847c550
  __ https://lab.nexedi.com/nexedi/pygolang/commit/704d99f0
Kirill Smelkov's avatar
Kirill Smelkov committed
492

Kirill Smelkov's avatar
Kirill Smelkov committed
493
0.0.0.dev7 (2019-01-16)
Kirill Smelkov's avatar
Kirill Smelkov committed
494
~~~~~~~~~~~~~~~~~~~~~~~
Kirill Smelkov's avatar
Kirill Smelkov committed
495 496 497 498

- Provide `gpython` interpreter, that sets UTF-8 as default encoding, integrates
  gevent and puts `go`, `chan`, `select` etc into builtin namespace (commit__).

499
  __ https://lab.nexedi.com/nexedi/pygolang/commit/32a21d5b
Kirill Smelkov's avatar
Kirill Smelkov committed
500

Kirill Smelkov's avatar
Kirill Smelkov committed
501
0.0.0.dev6 (2018-12-13)
Kirill Smelkov's avatar
Kirill Smelkov committed
502
~~~~~~~~~~~~~~~~~~~~~~~
Kirill Smelkov's avatar
Kirill Smelkov committed
503 504 505

- Add `strconv` package with `quote` and `unquote` (`commit 1`__, 2__).

506 507
  __ https://lab.nexedi.com/nexedi/pygolang/commit/f09701b0
  __ https://lab.nexedi.com/nexedi/pygolang/commit/ed6b7895
Kirill Smelkov's avatar
Kirill Smelkov committed
508 509 510

- Support `PyPy` as well (commit__).

511
  __ https://lab.nexedi.com/nexedi/pygolang/commit/c859940b
Kirill Smelkov's avatar
Kirill Smelkov committed
512

Kirill Smelkov's avatar
Kirill Smelkov committed
513
0.0.0.dev5 (2018-10-30)
Kirill Smelkov's avatar
Kirill Smelkov committed
514
~~~~~~~~~~~~~~~~~~~~~~~
Kirill Smelkov's avatar
Kirill Smelkov committed
515 516 517 518

- Fix `select` bug that was causing several cases to be potentially executed
  at the same time (`commit 1`__, 2__, 3__).

519 520 521
  __ https://lab.nexedi.com/nexedi/pygolang/commit/f0b592b4
  __ https://lab.nexedi.com/nexedi/pygolang/commit/b51b8d5d
  __ https://lab.nexedi.com/nexedi/pygolang/commit/2fc6797c
Kirill Smelkov's avatar
Kirill Smelkov committed
522 523 524 525

- Add `defer` and `recover` (commit__).
  The implementation is partly inspired by work of Denis Kolodin (1__, 2__).

526
  __ https://lab.nexedi.com/nexedi/pygolang/commit/5146eb0b
Kirill Smelkov's avatar
Kirill Smelkov committed
527 528 529 530 531
  __ https://habr.com/post/191786
  __ https://stackoverflow.com/a/43028386/9456786

- Fix `@method` on Python3 (commit__).

532
  __ https://lab.nexedi.com/nexedi/pygolang/commit/ab69e0fa
Kirill Smelkov's avatar
Kirill Smelkov committed
533 534 535

- A leaked goroutine no longer prevents whole program to exit (`commit 1`__, 2__).

536 537
  __ https://lab.nexedi.com/nexedi/pygolang/commit/69cef96e
  __ https://lab.nexedi.com/nexedi/pygolang/commit/ec929991
Kirill Smelkov's avatar
Kirill Smelkov committed
538 539


Kirill Smelkov's avatar
Kirill Smelkov committed
540
0.0.0.dev4 (2018-07-04)
Kirill Smelkov's avatar
Kirill Smelkov committed
541
~~~~~~~~~~~~~~~~~~~~~~~
Kirill Smelkov's avatar
Kirill Smelkov committed
542 543 544

- Add `py.bench` program and `golang.testing` package with corresponding bits (commit__).

545
  __ https://lab.nexedi.com/nexedi/pygolang/commit/9bf03d9c
Kirill Smelkov's avatar
Kirill Smelkov committed
546

Kirill Smelkov's avatar
Kirill Smelkov committed
547
0.0.0.dev3 (2018-07-02)
Kirill Smelkov's avatar
Kirill Smelkov committed
548
~~~~~~~~~~~~~~~~~~~~~~~
Kirill Smelkov's avatar
Kirill Smelkov committed
549 550 551 552

- Support both Python2 and Python3; `qq` now does not escape printable UTF-8
  characters. (`commit 1`__, 2__, 3__).

553 554 555
  __ https://lab.nexedi.com/nexedi/pygolang/commit/02dddb97
  __ https://lab.nexedi.com/nexedi/pygolang/commit/e01e5c2f
  __ https://lab.nexedi.com/nexedi/pygolang/commit/622ccd82
Kirill Smelkov's avatar
Kirill Smelkov committed
556 557 558 559

- `golang/x/perf/benchlib:` New module to load & work with data in Go benchmark
  format (commit__).

560
  __ https://lab.nexedi.com/nexedi/pygolang/commit/812e7ed7
Kirill Smelkov's avatar
Kirill Smelkov committed
561 562 563


0.0.0.dev2 (2018-06-20)
Kirill Smelkov's avatar
Kirill Smelkov committed
564
~~~~~~~~~~~~~~~~~~~~~~~
Kirill Smelkov's avatar
Kirill Smelkov committed
565 566 567 568 569 570

- 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.

571
  __ https://lab.nexedi.com/nexedi/pygolang/commit/afa46cf5
Kirill Smelkov's avatar
Kirill Smelkov committed
572 573 574


0.0.0.dev1 (2018-05-21)
Kirill Smelkov's avatar
Kirill Smelkov committed
575
~~~~~~~~~~~~~~~~~~~~~~~
Kirill Smelkov's avatar
Kirill Smelkov committed
576 577 578

- Initial release; `gimport` functionality only (commit__).

579
  __ https://lab.nexedi.com/nexedi/pygolang/commit/9c61f254
Kirill Smelkov's avatar
Kirill Smelkov committed
580 581 582 583


.. readme_renderer/pypi don't support `.. class:: align-center`
.. |_| unicode:: 0xA0   .. nbsp