Skip to content

Upgrading billiard 3 to 4

Breaking3.6.4.0 → 4.3.1Breaking5Platform5Changed14Fixed17Other31

BreakingUpgrade verdict

5 breaking changes and 5 platform requirement changes.

  • Passing True or False where a number is expected now raises an error instead of being treated as 1 or 0.
  • Creating a pool with zero or negative processes now fails instead of being accepted.
  • Setting maxtasksperchild to zero or a negative number now raises an error.
  • Calling close on a process that has not finished now raises an error instead of silently closing it.
Top 5 of 10 that need code or config changes

Requires Python >=3.10 from 4.3.0 (none stated before).

Breaking5
Rejects bool values for Pool numeric arguments such as processes, timeouts and limits.
Pool
Rejects fewer than one pool process.
Pool
Rejects a non-positive maxtasksperchild in Pool.
Poolmaxtasksperchild
Refuses to close a Process that is still running.
ProcessProcess.close()
Raises ValueError when using a closed Queue.
Queue
Platform5
Updates the Python version requirement to 3.10.
Adds initial support for Python 3.13.
Removes Python 3.7 support.
Adds support for Python 3.11 _posixsubprocess.fork_exec() arguments.
_posixsubprocess.fork_exec()
Drops support for Python versions below 3.7.

Generated by DepDelta from published Python source. Not mixed with prose notes.

  • removed: variable cpickle
  • removed: variable pickle
  • changed: class restart_state(object) → class restart_state
  • added: function clear_terminate_handler_fired()
  • added: function terminate_handler_fired()
  • removed: class bytes(_bytes)
  • removed: function closerange(fd_low, fd_high)
  • removed: variable buf_t
  • removed: variable bytes
  • removed: variable closerange
  • removed: variable is_new_buffer
  • changed: class Listener(object) → class Listener
  • changed: class ExceptionInfo(object) → class ExceptionInfo
  • changed: class Traceback(object) → class Traceback
  • removed: class WhateverIO(StringIO)
  • removed: class timespec(ctypes.Structure)
  • removed: function exec_(code, globs=…, locs=…)
  • removed: function items(d)
  • removed: function keys(d)
  • removed: function nextfun(it)
  • removed: function reraise(tp, value, tb=…)
  • removed: function values(d)
  • removed: function with_metaclass(Type, skip_attrs=…)
  • removed: method WhateverIO.write(data)
  • removed: variable BytesIO
  • removed: variable CLOCK_MONOTONIC
  • removed: variable CoreServices
  • removed: variable PY3
  • removed: variable SYSTEM
  • removed: variable WhateverIO
  • removed: variable absolute_to_nanoseconds
  • removed: variable clock_gettime
  • removed: variable ctypes
  • removed: variable exec_
  • removed: variable int_types
  • removed: variable libSystem
  • removed: variable librt
  • removed: variable long_t
  • removed: variable mach_absolute_time
  • removed: variable map
  • removed: variable monotonic
  • removed: variable range
  • removed: variable reload
  • removed: variable string
  • removed: variable string_t
  • removed: variable text_t
  • changed: class BufferWrapper(object) → class BufferWrapper
  • changed: class BaseManager(object) → class BaseManager
  • changed: class BaseProxy(object) → class BaseProxy
  • changed: class Token(object) → class Token
  • changed: class ApplyResult(object) → class ApplyResult
  • changed: class IMapIterator(object) → class IMapIterator
  • changed: class Pool(object) → class Pool
  • changed: class Worker(object) → class Worker
  • changed: class Popen(object) → class Popen
  • changed: class Popen(object) → class Popen
  • changed: class BaseProcess(object) → class BaseProcess
  • changed: class Queue(object) → class Queue
  • changed: class DupHandle(object) → class DupHandle
  • changed: class DupFd(object) → class DupFd
  • changed: class DupSocket(object) → class DupSocket
  • changed: class Condition(object) → class Condition
  • changed: class Event(object) → class Event