Skip to content

Releases: thierry-martinez/pyml

2023-11-01

01 Nov 17:53
01ddf05
Compare
Choose a tag to compare
  • Compatibility with Python 3.13

  • Fix segmentation fault by forgetting objects on library unloading.
    Observed on Fedora Rawhide with address randomization,
    reported by Jerry James,
    #85

  • #93, #94: Fix Py.Object.get_attr_string: this function now returns
    None when attribute is missing (the former version raised an
    exception, despite the option return type and contrary to what was
    documented).
    Reported by Lindsay Errington, @dlindsaye,
    #93

  • #91, #92, #94: Better search heuristics for python library.
    Suggested by camlspotter and Et7f3.
    Use of python-config.
    Use of otool -L instead of ldd on Mac OS X.
    #91
    #92

  • #96: find functions (Py.Object.find, Py.Object.find_string,
    Py.Dict.find, Py.Dict.find_string, Py.Object.find_attr_string
    and Py.Object.find_attr) now consistently fail with Not_found
    exception, as it is said in the documentation. Functions
    Py.Object.find_err, Py.Object.find_string_err,
    Py.Object.find_attr_err, Py.Object.find_attr_string_err have
    been introduced for cases where keeping the underlying Python
    exception is preferable. For instance, Py.Module.get is now an
    alias for Py.Object.find_attr_string_err to keep the current
    behavior of failing with a Python exception.
    Reported by Jonathan Laurent,
    #96

2022-09-05

05 Sep 14:58
Compare
Choose a tag to compare
  • Support for OCaml 5.0

  • Support for Python 3.11.
    All OCaml exceptions raised in callbacks are now encapsulated with their
    backtrace in Python exceptions instead of bypassing the Python interpreter.
    The former behavior led to segmentation faults in the test-suite, and nothing
    indicate that previous versions of Python were supposed to support that well.
    The new behavior can break existing code, especially code relying on
    Py.Run.simple_string, which now catches all exceptions, including OCaml
    exceptions. If you need proper exception handling, you can use Py.Run.eval.
    (reported by Jerry James,
    #84)

  • New function Py.Object.dir.

  • New functions Py.Err.set_interrupt and, for Python >=3.10,
    Py.Err.set_interrupt_ex.

  • New functions
    Py.Dict.{to_bindings_seq, to_bindings_seq_map, to_bindings_string_seq}.

  • New function Py.Capsule.create, equivalent to Py.Capsule.make, but
    returning the record { wrap; unwrap } of the new type 'a Py.Capsule.t
    instead of a pair.

  • Do not let python capture sigint by default (can be changed by passing
    ~python_sigint:true to Py.initialize): Ctrl+C now interrupts the
    program, even after Py.initialize is called.
    (reported by Arulselvan Madhavan,
    #83)

  • Bindings for exceptions: PyExc_EncodingWarning (added in Python 3.10),
    PyExc_ResourceWarning (added in Python 3.2)
    (reported by Jerry James,
    #84)

  • Fixes in bindings for PyCompilerFlags, PyMarshal_WriteObjectToFile,
    and PySet_Clear
    (reported by Jerry James,
    #84)

2022-06-15

15 Jun 13:01
Compare
Choose a tag to compare
  • Numpy.to_bigarray_k is continuation-passing-style version of Numpy.to_bigarray,
    allowing caller to convert Numpy arrays to bigarrays without having to know
    the kind and the layout of the array
    (suggested by Lindsay Errington and Andie Sigler,
    #81)

2022-03-25

25 Mar 15:18
Compare
Choose a tag to compare
  • Fix debug build detection

  • Expose the function Py.Callable.handle_errors

2022-03-22

22 Mar 09:14
Compare
Choose a tag to compare
  • New function Py.Import.exec_code_module_from_string
    (suggested by Francois Berenger, #78)

  • New function Py.Module.compile provides a better API than Py.compile.

  • Py.Object.t can now be serialized (with Marshal or output_value), using Python
    pickle module

  • Cross-compiling friendly architecture detection
    (suggested by @EduardoRFS, https://discuss.ocaml.org/t/a-zoo-of-values-for-system/8525/20)

  • Detect macro unix instead of __linux__, to handle *BSD OSes
    (reported by Chris Pinnock, #74)

  • Fix bug in Windows

  • Null checks for many functions raising OCaml exceptions, instead of segmentation fault
    (initial implementation by Laurent Mazare, #72)

  • Fix wide character conversion bugs leading to segmentation fault in Py_wfopen
    (fixed by Jerry James, #75)

  • Gc.full_major () before unloading libpython in Py.finalize, to prevent
    segfaulting on finalizing dangling references to Python values after the library
    had been unloaded
    (reported by Denis Efremov on coccinelle mailing list)

  • Fix segmentation fault when ~debug_build:true was passed to Py.initialize
    (reported by Stéphane Glondu, #79)

2021-10-15

15 Oct 13:12
Compare
Choose a tag to compare

2021-09-24

29 Sep 08:01
Compare
Choose a tag to compare
  • Use dune as default build system
    (dunification done by Laurent Mazare, #28)

    This should in particular fix build problems of reverse dependencies
    with the byte-code compiler
    (reported by @nicoTolly, #62)

    • Handle more platforms with dune
      (reported by Olaf Hering, #68)

    • pyutils is no longer used by generate and is shipped with pyml package
      as it was the case with Makefile-based build system
      (reported by Olaf Hering, #69)

  • Support for raising exceptions with traceback from OCaml
    (implemented by Laurent Mazare, #65)

  • Fix soundness bug with numpy
    (reported by Richard Alligier, #65)

  • Fix Py.Array.numpy arrays on 32-bit platforms
    (reported by Olaf Hering, #70)

  • Fix soundness bug on strings with OCaml <4.06 (reported by OCaml CI)

2021-02-26

26 Feb 22:19
Compare
Choose a tag to compare
  • Compatibility with Python 3.10 (reported by Richard W.M. Jones)

    • PyObject_AsCharBuffer, PyObject_AsReadBuffer, PyObject_AsWriteBuffer bindings are marked optional as they have been removed in Python 3.10.

    • Py_fopen is optional and Py_wfopen is used instead if available.

  • More general handling of Unix architectures.
    (Fixed by Pino Toscano, #57)

  • Add Py.Set module for Python sets.
    (Added by Laurent Mazare)

  • Fix #61: Numpy.to_bigarray raises an exception if source value is not a Numpy array instead of segfaulting.
    (Reported by Jonathan Laurent)

  • Fix #56, #59: Add python-config heuristics to find Python library.
    (Reported by Anders Thuné and Nils Becker)

  • Fix import_module_opt for Python <3.6
    (Reported by opam CI.)

20200518

18 May 09:59
Compare
Choose a tag to compare
  • Fix: Add an __iter__ method to python iterators.
    (Fixed by Laurent Mazare, #47)

  • Add Py.Seq.{of_seq_map, to_seq_map, unsafe_to_seq_map, of_list, of_list_map} functions.

  • Remove Py.Import.cleanup, which has been removed from Python 3.9, and was marked "for internal use only" before.
    (Reported by Victor Stinner, #49)

  • Fix: memory leak in pyml_wrap_closure
    (Fixed by Laurent Mazare, #53)

  • Add Py.Module.set_docstring, for Python >=3.5.
    (Added by Laurent Mazare, #54)

  • Fix: install .cmx files
    (Reported by Jonathan Laurent, #55)

20200222

22 Feb 20:01
Compare
Choose a tag to compare
  • Fix: do not fail if GIL functions are unavailable

  • Fix: include stdcompat.h provided with stdcompat version 13 for the prototype of caml_alloc_initialized_string.

  • Fix: reference to the native plugin (.cmxs) in META