0.1.0 (2022-09-11)
CAUTION: The module layout changed, effectively BREAKING BACKWARDS COMPATIBILITY for all use-cases!
OLD | NEW | |
---|---|---|
default session | import zugbruecke as ctypes |
import zugbruecke.ctypes as ctypes |
default session member | from zugbruecke import c_double |
from zugbruecke.ctypes import c_double |
ctypes session class | zugbruecke.session |
zugbruecke.CtypesSession |
Wine Python | wine-python |
wenv python |
Wine Pip | wine-pip |
wenv pip |
Wine Pytest | wine-pytest |
wenv pytest |
Wine Python shebang | #!/usr/bin/env wine-python |
#!/usr/bin/env _wenv_python |
configuration | {"version": "3.5.3"} |
{"pythonversion": "3.7.4"} |
Significant changes were mandatory for allowing to cleanup a lot of old code and to remove long-standing bugs. The main issue was that importing zugbruecke
would implicitly start a new session. This could not be prohibited. With the new package layout, it becomes possible to import sub-modules of zugbruecke
without implicitly starting a session. One of the more significant added benefits therefore is that this also allows much more fine-grained tests.
zugbruecke
will use semantic versioning from now on. Breaking changes will be indicated by increasing the second version number, the minor version. Going for example from 0.0.x to 0.1.y or going from 0.1.x to 0.2.y therefore indicates a breaking change. For as long as zugbruecke
has development status "alpha", please expect more breaking changes to come.
- CLI: The shell scripts
wine-python
,wine-pip
andwine-pytest
have been consolidated into a new Python package called wenv. One can now callwenv python
,wenv pip
andwenv pytest
. This change was necessary for allowing a more generic interface to entry points of arbitrary third party packages. Runwenv help
for more information. Changes related towenv
are now being tracked in wenv's change log.wenv
has considerably more features and configuration options compared to the previously provided shell scripts. - API:
zugbruecke.current_session
is no longer available.zugbruecke.ctypes
on its own is now the default session. Besides, the classzugbruecke.session
was renamed intozugbruecke.CtypesSession
and has now a fully compatiblectypes
drop-in replacement API as well. Both,zugbruecke.ctypes
and custom sessions constructed fromzugbruecke.CtypesSession
now have methods and properties prefixed withzb_
for manipulating their configuration, termination and Wine-related tasks. - API: Configuration provided via environment variables is consistently preferred over everything else.
- API: The
set_parameter
method, now renamed intozb_set_parameter
, only accepts a single key-value pair instead of a dictionary. - API: The
version
configuration parameter for controlling the version of Wine Python has been renamed topythonversion
. - FEATURE: All configuration parameters can be overridden with individual environment variables.
- FEATURE: Introduced new exception types specific to
zugbruecke
. Meaningful exception are now raised throughout the package. - FEATURE: Timeouts for start and stop of the server component can be configured.
- FEATURE: Added support for CPython 3.10, see #75.
- FEATURE: Added support for CPython 3.9, see #74.
- FEATURE: Added support for CPython 3.8, see #56.
- FEATURE: Dropped support for CPython <= 3.6.
- FEATURE: Added support for Wine >= 6.0.
- FEATURE: Dropped support for Wine <= 5, most prominently Wine 4.
- FEATURE:
zugbruecke.CtypesSession
objects can be managed by context manager statements (with
). - FIX:
zugbruecke
did not capture and forward data coming from Windows DLLs and binaries throughstdout
andstderr
(running with Wine) most of the time. - FIX: A proper
TimeoutError
is raised (instead of aSyntaxError
) ifzugbruecke
's server component does not start. - FIX:
zugbruecke
did not actually check properly if its server component had terminated when a session was terminated. The reliability of relevant termination code has been significantly improved. - FIX: Methods from
zugbruecke.ctypes.util
(previouslyzugbruecke.util
) are faster and a lot less error-prone, see #52. - FIX:
zugbruecke.ctypes.CDLL
does no longer fall back to Unix libraries if no corresponding DLL file could be found. For attaching to Unix libraries please use the originalctypes
module instead, see #53. - FIX: Different structure types from different name spaces BUT identical names caused crashes, see #61.
- FIX:
zugbruecke
raisedTypeError
if too many arguments were given to a configuredcdll
function (ctypes
does not), see #62. - FIX: If a struct type was used in a function call with
memsync
first (before use in a function call withoutmemsync
), configuring (and calling) the function failed, see #63. - FIX: Path conversion would fail for Wine 5.13 and later.
- FIX: Memory leak - sessions would collect all log data for as long as they were running, see #76.
- DOCS: Hugely improved.
- DOCS: Project mailing list and chat room.
- DEV: New
makefile
structure. - DEV: All code is tested for both, 32bit (
win32
) and 64bit (win64
) DLLs, see #58. Previously, only 32bit (win32
) DLLs received regular testing. - DEV: All code is tested for both, the
cdll
/cdecl
andwindll
/stdcall
calling conventions (previously onlywindll
/stdcall
received regular testing), see #60. - DEV:
zugbruecke
is tested across all supported versions of CPython, both on Unix and on Wine side. - DEV: The configuration module was refactored and made clearer and faster, allowing to implement new options.
- DEV: New debug mode, can be activated by setting the environment variable
ZUGBRUECKE_DEBUG
to1
. - DEV: Development dependency switch from unmaintained
python-language-server
topython-lsp-server
. - DEV: Both code and branch coverage of
zugbruecke
can now be analyzed withcoverage
. - DEV: Moved from
setuptools
for packaging topyproject.toml
viaflit
. - DEV: Cleanup of
docs
folder structure. - DEV: Include logo in repo.