commit
						2c12d39617
					
				|  | @ -23,8 +23,7 @@ jobs: | |||
|       - name: Run MyPy check | ||||
|         run: mypy tractor/ --ignore-missing-imports | ||||
| 
 | ||||
|   testing: | ||||
| 
 | ||||
|   testing-linux: | ||||
|     name: '${{ matrix.os }} Python ${{ matrix.python }} - ${{ matrix.spawn_backend }}' | ||||
|     timeout-minutes: 9 | ||||
|     runs-on: ${{ matrix.os }} | ||||
|  | @ -32,8 +31,8 @@ jobs: | |||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest] | ||||
|         python: ['3.9'] | ||||
|         os: [ubuntu-latest] | ||||
|         python: ['3.9', '3.10'] | ||||
|         spawn_backend: ['trio', 'mp'] | ||||
| 
 | ||||
|     steps: | ||||
|  | @ -52,8 +51,8 @@ jobs: | |||
|       - name: Run tests | ||||
|         run: pytest tests/ --spawn-backend=${{ matrix.spawn_backend }} -rs | ||||
| 
 | ||||
|   testing-msgspec: | ||||
|     # runs py3.9 jobs on all OS's but with optional `msgspec` dep installed | ||||
|   testing-linux-msgspec: | ||||
|     # runs jobs on all OS's but with optional `msgspec` dep installed | ||||
|     name: '${{ matrix.os }} Python ${{ matrix.python }} - ${{ matrix.spawn_backend }} - msgspec' | ||||
|     timeout-minutes: 10 | ||||
|     runs-on: ${{ matrix.os }} | ||||
|  | @ -61,8 +60,8 @@ jobs: | |||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest] | ||||
|         python: ['3.9'] | ||||
|         os: [ubuntu-latest] | ||||
|         python: ['3.9', '3.10'] | ||||
|         spawn_backend: ['trio', 'mp'] | ||||
| 
 | ||||
|     steps: | ||||
|  | @ -80,3 +79,40 @@ jobs: | |||
| 
 | ||||
|       - name: Run tests | ||||
|         run: pytest tests/ --spawn-backend=${{ matrix.spawn_backend }} -rs | ||||
| 
 | ||||
|   # We skip 3.10 on windows for now due to | ||||
|   # https://github.com/pytest-dev/pytest/issues/8733 | ||||
|   # some kinda weird `pyreadline` issue.. | ||||
| 
 | ||||
|   # TODO: use job filtering to accomplish instead of repeated | ||||
|   # boilerplate as is above XD: | ||||
|   # - https://docs.github.com/en/actions/learn-github-actions/managing-complex-workflows | ||||
|   # - https://docs.github.com/en/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix | ||||
|   # - https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#jobsjob_idif | ||||
|   testing-windows: | ||||
|     name: '${{ matrix.os }} Python ${{ matrix.python }} - ${{ matrix.spawn_backend }}' | ||||
|     timeout-minutes: 9 | ||||
|     runs-on: ${{ matrix.os }} | ||||
| 
 | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [windows-latest] | ||||
|         python: ['3.9'] | ||||
|         spawn_backend: ['trio', 'mp'] | ||||
| 
 | ||||
|     steps: | ||||
| 
 | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
| 
 | ||||
|       - name: Setup python | ||||
|         uses: actions/setup-python@v2 | ||||
|         with: | ||||
|           python-version: '${{ matrix.python }}' | ||||
| 
 | ||||
|       - name: Install dependencies | ||||
|         run: pip install -U . -r requirements-test.txt -r requirements-docs.txt --upgrade-strategy eager | ||||
| 
 | ||||
|       - name: Run tests | ||||
|         run: pytest tests/ --spawn-backend=${{ matrix.spawn_backend }} -rs | ||||
|  |  | |||
							
								
								
									
										51
									
								
								NEWS.rst
								
								
								
								
							
							
						
						
									
										51
									
								
								NEWS.rst
								
								
								
								
							|  | @ -4,6 +4,57 @@ Changelog | |||
| 
 | ||||
| .. towncrier release notes start | ||||
| 
 | ||||
| tractor 0.1.0a3 (2021-11-02) | ||||
| ============================ | ||||
| 
 | ||||
| Features | ||||
| -------- | ||||
| 
 | ||||
| - Switch to using the ``trio`` process spawner by default on windows. (#166) | ||||
| 
 | ||||
|   This gets windows users debugger support (manually tested) and in | ||||
|   general a more resilient (nested) actor tree implementation. | ||||
| 
 | ||||
| - Add optional `msgspec <https://jcristharif.com/msgspec/>`_ support | ||||
|   as an alernative, faster MessagePack codec. (#214) | ||||
| 
 | ||||
|   Provides us with a path toward supporting typed IPC message contracts. Further, | ||||
|   ``msgspec`` structs may be a valid tool to start for formalizing our | ||||
|   "SC dialog un-protocol" messages as described in `#36 | ||||
|   <https://github.com/goodboy/tractor/issues/36>`_`. | ||||
| 
 | ||||
| - Introduce a new ``tractor.trionics`` `sub-package`_ that exposes | ||||
|   a selection of our relevant high(er) level trio primitives and | ||||
|   goodies. (#241) | ||||
| 
 | ||||
|   At outset we offer a ``gather_contexts()`` context manager for | ||||
|   concurrently entering a sequence of async context managers (much like | ||||
|   a version of ``asyncio.gather()`` but for context managers) and use it | ||||
|   in a new ``tractor.open_actor_cluster()`` manager-helper that can be | ||||
|   entered to concurrently spawn a flat actor pool. We also now publicly | ||||
|   expose our "broadcast channel" APIs (``open_broadcast_receiver()``) | ||||
|   from here. | ||||
| 
 | ||||
| .. _sub-package: ../tractor/trionics | ||||
| 
 | ||||
| - Change the core message loop to handle task and actor-runtime cancel | ||||
|   requests immediately instead of scheduling them as is done for rpc-task | ||||
|   requests. (#245) | ||||
| 
 | ||||
|   In order to obtain more reliable teardown mechanics for (complex) actor | ||||
|   trees it's important that we specially treat cancel requests as having | ||||
|   higher priority. Previously, it was possible that task cancel requests | ||||
|   could actually also themselves be cancelled if a "actor-runtime" cancel | ||||
|   request was received (can happen during messy multi actor crashes that | ||||
|   propagate). Instead cancels now block the msg loop until serviced and | ||||
|   a response is relayed back to the requester. This also allows for | ||||
|   improved debugger support since we have determinism guarantees about | ||||
|   which processes must wait before hard killing their children. | ||||
| 
 | ||||
| - Drop Python 3.8 support in favor of rolling with two latest releases | ||||
|   for the time being. (#248) | ||||
| 
 | ||||
| 
 | ||||
| tractor 0.1.0a2 (2021-09-07) | ||||
| ============================ | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,4 +0,0 @@ | |||
| Switch to using the ``trio`` process spawner by default on windows. | ||||
| 
 | ||||
| This gets windows users debugger support (manually tested) and in | ||||
| general a more resilient (nested) actor tree implementation. | ||||
|  | @ -1,9 +0,0 @@ | |||
| Add optional `msgspec <https://jcristharif.com/msgspec/>`_ support over | ||||
| TCP streams as an alernative, faster MessagePack codec. | ||||
| 
 | ||||
| This get's us moving toward typed messaging/IPC protocols. Further, | ||||
| ``msgspec`` structs may be a valid tool to start for formalizing our "SC | ||||
| dialog un-protocol" messages as described in `#36 | ||||
| <https://github.com/goodboy/tractor/issues/36>`_`. | ||||
| 
 | ||||
| 
 | ||||
|  | @ -1,6 +0,0 @@ | |||
| Introduce a new `sub-package`_ that exposes all our high(er) level trio primitives and goodies, most importantly: | ||||
| 
 | ||||
| - A new ``open_actor_cluster`` procedure is available for concurrently spawning a number of actors. | ||||
| - A new ``gather_contexts`` procedure is available for concurrently entering a sequence of async context managers. | ||||
| 
 | ||||
| .. _sub-package: ../tractor/trionics | ||||
|  | @ -1,13 +0,0 @@ | |||
| Change the core message loop to handle task and actor-runtime cancel | ||||
| requests immediately instead of scheduling them as is done for rpc-task | ||||
| requests. | ||||
| 
 | ||||
| In order to obtain more reliable teardown mechanics for (complex) actor | ||||
| trees it's important that we specially treat cancel requests as having | ||||
| higher priority. Previously, it was possible that task cancel requests | ||||
| could actually also themselves be cancelled if a "actor-runtime" cancel | ||||
| request was received (can happen during messy multi actor crashes that | ||||
| propagate). Instead cancels now block the msg loop until serviced and | ||||
| a response is relayed back to the requester. This also allows for | ||||
| improved debugger support since we have determinism guarantees about | ||||
| which processes must wait before hard killing their children. | ||||
|  | @ -1 +0,0 @@ | |||
| Drop Python 3.8 support in favor of rolling with two latest releases for the time being. | ||||
		Loading…
	
		Reference in New Issue