1. 10 Apr, 2020 1 commit
    • Stefan Behnel's avatar
      Fix fix unicode normalisation test in Windows. (GH-3194) · e2dcfb58
      Stefan Behnel authored
      * Rewrite the test code generation for the unicode normalisation test, making sure that we always write UTF-8 source files.
      
      * Fix failures to print the compilation status for modules with non-ascii names (on Windows).
      
      * Help with remote debugging environment encoding problems in test runs, by extending the output of the "buildenv" pseudo-test.
      
      * Explicitly set I/O encoding for subprocesses in parallel cythonize() runs to make the test runner workers inherit it (instead of defaulting to ASCII in Py2).
      
      * Use a Latin-1 Unicode character in the test for Unicode module names to make it more compatible with Windows file system character sets (such as CP-1252).
      
      * Properly decode source and module file name from the FS encoding in Py2. Previously, with ASCII module names, UTF-8 decoding always worked, but wasn't correct.
      
      * Hack around a distutils 3.[5678] bug on Windows for unicode module names.
      https://bugs.python.org/issue39432
      
      * Try to fix cython.inline() on Windows with Py3.8+ where the DLL loading requires an explicit registration of the extension output directory.
      Closes GH-3450.
      e2dcfb58
  2. 09 Apr, 2020 4 commits
  3. 08 Apr, 2020 2 commits
  4. 07 Apr, 2020 8 commits
  5. 06 Apr, 2020 7 commits
  6. 03 Apr, 2020 4 commits
  7. 02 Apr, 2020 6 commits
    • da-woods's avatar
      Relaxed some of the checks on calling fused functions (GH-3381) · 2ca3f569
      da-woods authored
      Relaxed some of the checks of fused functions to be consistent with general CyFunctions.
      
      ```
       # cython: binding=True
      def f(arg):
        pass
      
      class C:  # or cdef class...
        f = f
        def g(self, ...):
          pass
      
      C.f(something) or C().f() # doesn't enforce any checks on the type of arg -
       # with a fused function it does.
      
      C.g(something) # assumes that self is "C" (at least for a cdef class)
       # but doesn't check it. A fused function enforces that it is C.
      
      C.f() # fails with a fused function claiming too few arguments, even though
       # default arguments may make it a valid call
      ```
      
      Obviously removing checks does make things a little less safe, but it
      is consistent with the more general function behaviour. (I'm doing
      this as part of a broad plan to abuse fused functions to be a bit
      cleverer about decorators, but I don't think the motivation hugely
      matters for this change)
      2ca3f569
    • Stefan Behnel's avatar
      Update changelog. · 830bdfac
      Stefan Behnel authored
      830bdfac
    • Stefan Behnel's avatar
    • Stefan Behnel's avatar
      Update changelog. · 5ab92ce5
      Stefan Behnel authored
      5ab92ce5
    • da-woods's avatar
      Concatenate strings in place if possible (GH-3451) · 76043d6e
      da-woods authored
      Optimized inplace operations for str/unicode so that they're
      genuinely done in place if no-one else needs the object. This
      is what CPython tries to do (and string concatenation was
      a point where it significantly beat Cython at times).
      
      This only works if the types are known at compile time, so with
      unknown types CPython will still be faster in some cases.
      
      Note: Uses slightly odd-macro trickery - does modify the input argument too
      (although only in places where it shouldn't matter).
      76043d6e
    • William Ayd's avatar
      Optimize builtin str() calls (GH-3478) · 2c8e7b22
      William Ayd authored
      2c8e7b22
  8. 01 Apr, 2020 5 commits
  9. 31 Mar, 2020 3 commits