-
Notifications
You must be signed in to change notification settings - Fork 193
/
Changelog
842 lines (428 loc) · 20.6 KB
/
Changelog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
0.17.0 2024-10-19 Serge Guelton <[email protected]>
* Support parsing annotated statement
* Document and test Meson integration
* Update / improve Blas detection, including scipy-openblas
* Fix usage of Blas library
* Improve error reporting
* Support array module
* Reduce dependency on setuptools
* Faster forward substitution
* Enforce default optimization level to `-O2`
0.16.1 2024-05-27 Serge Guelton <[email protected]>
* Fix massive memory leak in ndarray i troduced in 0.16.0
0.16.0 2024-05-14 Serge Guelton <[email protected]>
* Support numpy.vectorize, numpy.argsort's kind keyword, real/imag on
numpy_iexpr
* Add missing omp.set_num_thread descriptor
* Provide --trace-allocations switch
* Support empty PYTHRANRC for reproducible builds
* Improve compilation time
* Support ufunc creation through #pythran export ufunc func_name(arg_types...)
* Fix memory leak when returing numpy_gexpr to Python
* Numpy 2.x support
* Upgrade xsimd to 13.0.0
* Improve detection of non-overlapping memory area during gexpr assignment
* Improve python 3.12 support (distutils removal)
* Support imatmul
* Only link blas when needed
0.15.0 2023-12-29 Serge Guelton <[email protected]>
* Use pyproject.toml to store setup and build configuration
* Upgrade xsimd to a48ab430d4b84ecd5449180ee1c6d2eed67c4191
* Improve detection of non-overlapping memory area during gexpr assignment
* Support python 3.12
* Support list.clear
* Improve detection of methods uses as functions
0.14.0 2023-08-31 Serge Guelton <[email protected]>
* Numpy compatibility - update signatures, complex number handling, long
double support
* Lazyly import top-level modules and submodules
* Improve array indexing by an array
* Require at least clang 7 or gcc 8
* Make pythran compilation reproducible
* Support np.roll with multiple axis
* Support numpy.ndarray.view
* Improve documentation about using Pythran in a Python package
* Improve list resizing speed
* Fix bug when filtering an empty sequence
0.13.1 2023-05-02 Serge Guelton <[email protected]>
* Bump xsimd dependency to 11.0.0, with a backported patch.
0.13.0 2023-04-29 Serge Guelton <[email protected]>
* Improve performance of functions revieving scalar arguments. This changes
the internal function call API.
* Improve performance of fix-stride slicing, using a new slice
representation.
* Improve numpy.copyto performance, and detect copyto pattern usage.
* Force internal linkage of generated functions, which gives more
optimization room to the C++ compiler.
* Provide entry points pythran.import_pythrancode and
pythran.import_pythranfile, as a poor man JIT option.
* Optimize numpy.argmax(cst * val) into numpy.argmax(val) when cst is
positive.
* Avoid copies upon numpy.array_split
* Get rid of unused functions C++ warnings
* Avoid generating a loop footer when the loop index is not used outside of
the loop.
0.12.1 2023-01-05 Serge Guelton <[email protected]>
* Bump xsimd depdency to 10.0.0
* Correctly raise KeyError when getting an unset dict item
* Fix negative binomial implementation
* Correctly convert strided array with offset
* Support np.clip(v, None, x) and np.clip(v, x, None)
* Support scipy.special.ndtr, scipy.special.ndtri, scipy.special.gammaincinv
* Fix set intersection
* Support numpy.fft.fftn
* Support axis parameter in numpy.argsort
0.12.0 2022-09-20 Serge Guelton <[email protected]>
* Improve numpy expression computation speed
* Decent ICC support (fixing an issue from 2018!)
* Much faster C++ code generation
* Complete rework of constant folder
* Support C++-time evaluation of numpy.ndarray.ndim
* Improved omp declare reduction support
* Allow indexing of ndarray by integers of mixed types
* A lot of small pesty bug fixes in the C++ headers
0.11.0 2021-12-08 Serge Guelton <[email protected]>
* Upgrade xsimd version to 8.0.5
* Performance fix on np.dot with transposed parameters
* Raise an error when no specs are given and we want to generate a native module
* Support more complex transpose expression
* Honor quotes in config files for cflags, ldflags etc
* Add pythran option -ftime-report to print out the time spent on optimizations
* Support isinstance when second argument is a tuple
0.10.0 2021-09-08 Serge Guelton <[email protected]>
* Fix performance issue with assert handling
* Fix issue in libomp detection
* Support immediate value for some keyword parameters, esp; keep_dims
parameter
* Better detection of generalized expression overlap
* And extra minor fixes :-)
0.9.12 2021-07-06 Serge Guelton <[email protected]>
* Remove six, networkx and decorator dependency
* Bump gast and Beniget requirements to support python 3.10
* Bump xsimd to 7.5.0
* Minimal default support for non-linux, non-osx, now-windows platform
* Numpy improvements for np.bincount, np.transpose, np.searchsorted
* Restore (and test) cython compatibility
* Expose pythran.get_include for toolchain integration
* Improve error message on invalid spec
* Handle static dispatching based on keyword signature
* Raise Memory Error upon (too) large numpy alloc
* Support scalar case of scipy.special.binom
* Trim the number of warnings in pythonic codebase
0.9.11 2021-05-23 Serge Guelton <[email protected]>
* Fix compatibility issue with python 3.10
0.9.10 2021-05-09 Serge Guelton <[email protected]>
* Honor CXXFLAGS and LDFLAGS
* Generalize numpy.dot to higher dimenson (partial support)
* Fix important memory leak in handling of transposed matrices
* Fix several string interaction (str.split, f-string)
* Fix interaction with numpy.dtype.type
* Improve OpenMP detection
* Optimize some matrix transpose cases
0.9.9 2021-03-30 Serge Guelton <[email protected]>
* Always honor $HOME for user configuration lookup (even on Windows)
* Default to clang-cl on windows
* Honor CFLAGS environment variable
* Correctly type tuples that are not bound to a variable
* Move to pocketfft for fft related operations
* Support numpy.vdot, numpy.dot between array of different dtype, improve
numpy.copyto, numpy.ndarray constructor, numpy.ihfft, numpy.hfft,
numpy.full and numpy.full_like
* Return a floating point type when computing builtins.pow, unless the
exponenent is a positive integer literal
* Optimize shared reference of array expressions (not you again!)
* Introduce a specific type for strings of one element, aka chr
* Fix implementation of str.lstrip and str.rstrip, harden str.join
* Improve quality of the error report
* Detect divide by zero in debug mode
* Improve PythranBuildExt to support base class customization
0.9.8 2020-11-09 Serge Guelton <[email protected]>
* Basic f-string support
* Optimize shared reference of array expressions (again)
* np.nan{min,max}, np.around, np.wrap implementation fixes
* PYTHONOPTIMIZE={1,2} compatibility
* Support list.sort with key argument
0.9.7 2020-09-22 Serge Guelton <[email protected]>
* Improve computation of contiguous slices when bounds are positive
* Optimize shared reference of array expressions
* Speedup complex combined types computation
* Fix pythran-config with cl.exe or clang-cl.exe
* Support Python 3.9
0.9.6 2020-08-01 Serge Guelton <[email protected]>
* First release only supporting Python3
* Allow to disable blas usage through blas=none setting
* Improve range value analysis
* Change numpy expression evaluator
* Change sorting algorithm from std::sort to pdqsort
* Bug fixes in various numpy.* implementation
* Freeze gast and beniget version
* Diligently use and document assert behavior
* Many fix related to static conditions
* Improve np.sort and np.median argument support
* Improve scope computation in presence of if/else
* Refuse assert with side effect
* Provide sane default for OpenMP reduction on complex
* Upgrade boost version to 1.72
* Allow %{ext} substitution in output filename
* Prettier pythran syntax error
* Faster compilation (in some cases!)
* Partial np.tofile implementation
* Allow to specify --config 'pythran.optimizations=' on the CLI
* Fix interaction between OpenMP collapse and pythran-generated loops
0.9.5 2019-12-31 Serge Guelton <[email protected]>
* Last release supporting both Python2 and Python3
* Vectorized version of numpy.arange
* Support more numpy type conversion operators
* Improve translation time
* Version bump for xsimd dependency
* Fix compile without ENABLE_PYTHON_MODULE
* Various fixes for bug introduced in previous revision ^^!
0.9.4 2019-10-30 Serge Guelton <[email protected]>
* Support Python up to 3.8 (included)
* clang-cl on Windows support
* PyPy3.6 support
* Fix bug involving is None and loops
* Support numpy.heaviside, numpy.cross
* Significant improvement of numpy.random.* support
* Fix memory leak when converting a dict to python
* New optimization: dead function elimination
* Support for kwonly arguments
* More pattern transformations: numpy.cbrt, numpy.sqrt and variant of abssqr
* Support dtype argument for numpy.linspace
* Improve constant folding & forward substitution
* Extend range analysis to tuples
* Basic support for scipy.special.spherical_jn and scipy.special.spherical_yn
* Support isinstance builtin
* Support the type() builtin
* New command line parameter: --config= as an alternative to .pythranrc
* Various fixes and doc upgrade I'm too lazy to list here ;-)
0.9.3 2019-08-19 Serge Guelton <[email protected]>
* Warn users about deprecation of python2
* Fix incompatibility with numpy 1.17.0
* Allow pythran-openblas as a fallback dependency for openblas
* Better 32bit arch support
* Better support of OpenMP collapse clause
* Upgrade boost dep to 1.68 and xsimd dep to 7.2.2
* Use static shape information for more efficient broadcasting
* Allow / options on Windows platform in addition to Unix-style options
* Fix typing issue for r-value dict/set/list
* Allow to pass slice to pythran-exported functions
* Fix np.arange for integral numbers
* Fix static if support
* Support tuple arguments for np.concatenate
* Support default arguments for np.randint
* Support kind argument for np.sort
0.9.2 2019-05-05 Serge Guelton <[email protected]>
* Better support for `is None` pattern
* Support numpy.byte in code and annotation
* Fix string slice assignment
* Support numpy.interp
* Improved Windows support
* Fix numpy.fft in presence of threading
* Better error message upon type mismatch
* Extended support for numpy.append
* Fix ndarray printing
* Property report error on Elippsis
* Optimize away some uses of np.array
* Properly support keyword-only arguments from Python3
* Improved fixed-size array broadcasting
* New annotation syntax for default argument through the '?' qualifier
* Stricter type checking between Python and Pythran result type
* Rely on beniget <https://github.com/serge-sans-paille/beniget> for some
analyses
* Fix dtype inference for OSX and Windows, wrt 32/64 bits
* Generate code compatible with OpenMP collapse clause
* Fix np.bincount, np.angle, np.fromiter implementation
* Improved (but still incomplete) support of slicing of an array through
an array
* Allow specification of memory layout for 2D array parameters in
annotations
* Avoid useless copies for some dict operations
* Support np.expand_dims, np.correlate, np.convolve, np.setdiff1d
* Detect and specialize code for fixed-size list
* Support more dot-idiom-to-blas forwarding
* Fix important memory leak in numpy_gexpr to_python
0.9.1post0 2019-01-29 Serge Guelton <[email protected]>
* Fix np.transpose regression
* Upgrade xsimd to 7.1.2
* Fix setup.py test target
0.9.1 2019-01-18 Serge Guelton <[email protected]>
* Honor PYTHRANRC environment variable for config file lookup
* Stricter type checking for export parameters
* Allow some kind of list to tuple conversion
* Lazy slicing of broadcasted expression and transposed expression
* Support numpy.stack, numpy.rollaxis, numpy.broadcast_to,
numpy.ndarray.dtype.type
* Better support of array of complex numbers
* Verbose mode in pythran-config to debug compiler backend issues
* Config file linting
* Evaluate numpy.arange lazily when valid
* Faster PRNG, namely pcg
* Favor Python3 support in various places
* Fix Numpy.remainder implementation
* Better support for importing user modules
* More vectorized operations support
0.9.0 2018-11-06 Serge Guelton <[email protected]>
* Moving to xsimd as vectorization engine, requires -DUSE_XSIMD
* Better support of view conversion from Python to Pythran
* Improved Cython integration
* Improved documentation, add example section
* Updated ArchLinux Packaging
* Remove useless warnings during compilation
* Faster ``abs(x**2)`` for complex numbers
* IPython magic now accepts most optimization flags
* Automatic detection of partially (or fully) constant shape for arrays
* Add ignoreflags settings to .pythranrc to skip some compiler flags
* Quad number (aka long double) basic support
* And many minor bugfixes, as usual :-)
0.8.7 2018-09-16 Serge Guelton <[email protected]>
* Decent support for ``is None`` pattern
* Bessel functions, aka scipy.special.stuff
* ``__builtin__.slice`` support
* ``np.unravel_index``, ``np.(u)intc`` support
* Cleanup and fix issues around sdist / build_ext and stuff
* O(1) View conversion to Python
* Dropped big int support
* Speed improvement for ``np.argmin``, ``np.argmax`` and square of complex
* Allow partially (or fully) constant shape for arrays
* Deterministic header inclusion (toward reproducible build?)
* Better error report on argument mismatch
* Better support for view arguments (but still lotta missing :-/)
* Better Windows support (fix compiler-specific bugs) including OpenMP
0.8.6 2018-06-06 Serge Guelton <[email protected]>
* Much better support of fancy indexing, still not 100% support though
* Better distutils integration (extra_compile_args)
* Better support for np.unique, functor, np.Inf, np.arange, it.repeat
* Better support of user import from pythranized module (still no globals)
* Better OSX support (fix compiler-specific bugs)
* Most tests now work on Python 2 and Python 3
* Many bugfixes triggered by the bug report of Yann Diorcet, Jean Laroche
and David Menéndez Hurtado, Fabien Rozar, C. Claus
0.8.5 2018-04-23 Serge Guelton <[email protected]>
* numpy.fft support (thanks to Jean Laroche)
* Faster generalized expression
* Faster numpy.transpose, numpy.argmax, numpy reduction
* Sphinx-compatible generated docstring (thanks to Pierre Augier)
* Python output through ``-P`` (thanks to Pierre Augier)
* Many bugfixes and numpy improvements (thanks to Yann Diorecet and Jean Laroche)
0.8.4 2018-02-05 Serge Guelton <[email protected]>
* Slimmer generated binaries
* Preliminary native Windows support for Python3
* Several numpy-related function improvements
* @ operator support
* Better negative index support and range detection
* Glimpses of OpenMP4 support, min/max support in OpenMP reductions
* Python Capsule support
* Work around GCC-7 parsing bug
0.8.3 2017-10-14 Serge Guelton <[email protected]>
* Moving to networkx 2.0
* List/Tuple partial constant folding
* Minor notebook integration fixes
* Minor cython integration fixes
* Memory leak removal
* Support out field in numpy.sum
0.8.2 2017-09-12 Serge Guelton <[email protected]>
* Significant compilation time improvements (again)
* Improved cython cooperation
* Many OSX and Python3 integration fixes
* Revive pure C++ mode
* Exported functions now support keyword passing style
0.8.1 2017-07-04 Serge Guelton <[email protected]>
* Significant compilation time improvements
* Support for separated .pythran files
* Many bug fixes and perf improvement
0.8.0 2017-01-05 Serge Guelton <[email protected]>
* Python 3 support
* (unsound) Type Checker
* Various bug fixes and perf improvement, as usual
0.7.6 2016-07-05 Serge Guelton <[email protected]>
* Fix install / setup minor issues
* Restore OpenMP support
* Fix GMP installation issue
0.7.5 2016-06-13 Serge Guelton <[email protected]>
* Better Jupyter Note book integration
* Numpy Broadcasting support
* Improved value binding analysis
* Simple inlining optimization
* Type engine improvement
* Less fat in the generated modules
* More and better support for various Numpy functions
* Various performance improvement
* Global variable handling, as constants only though
0.7.4 2016-01-05 Serge Guelton <[email protected]>
* IPython's magic for pythran now supports extra compile flags
* Pythran's C++ output is compatible with Python3 and pythran3 can compile it!
* More syntax checks (and less template traceback)
* Improved UI (multiline pythran exports, better setup.py...)
* Pythonic leaning / bugfixing (this tends to be a permanent item)
* More generic support for numpy's dtype
* Simpler install (no more boost.python deps, nor nt2 configuration)
* Faster compilation (no more boost.python deps, smarter pass manager)
* Better testing (gcc + clang)
0.7.2 2015-10-13 Serge Guelton <[email protected]>
* Significantly decrease compilation time
* Faster execution of numpy generalized slicing
* Tentative conda support
* Tentative Windows support (using Win Python)
* Preserve original docstrings
* Add __pythran__ global variable to pythran generated modules
* Faster implementation of various itertools functions
* Rely on distutils for module code compilation
* Support most of numpy.random
* Remove git and make dependency to install nt2
* Proper pip support instead of distuils
* Remove dependency to boost.python
* Remove dependency to tcmalloc
* Pythonic library cleaning (less dependencies / header / splitting / mrpropering)
* More lazy computations
* More numpy function support (including dot on matrices, linalg.norm, mean)
* Lot of code cleaning / refactoring (both in Python and C++)
* Many bugfixes, thanks to all the bug reporters!
0.7 2015-04-06 Serge Guelton <[email protected]>
* Various numpy.* function implementation improvement (incl. concatenate,
str.join, itertools.combinations)
* Better error detection during install step
* 32 bit compatibility
* Complete rewrite of the expression engine
* Improved support of numpy extended expression
* Better user feedback on invalid pythran spec
* More efficient support of string literals
* Faster exponentiation when index is an integer
* NT2 revision bump
* No-copy list as numpy expression parameters
* Accept C and fortran layout for input arrays
* Range value analysis and boundcheck removal
* Newaxis style indexing
* Better array-of-complex support
* Glimpses of python3 support
* Support for importing user defined modules
* Archlinux support
* Accept strided array as exported function input
0.6 2014-10-22 Serge Guelton <[email protected]>
* Full SIMD support! Almost all numpy expressions are vectorized
* Better memory management at the Python/C++ layer, esp. when sharing
* Support named parameters
* Better complex numbers support
* A lot of internal code cleaning
* Better code generation for regular loops
* MacOS install guide & ArchLinux packages
* Travis run the test suite, w and w/ SIMD, w and w/ OpenMP
* Many performance improvements at the numpy expression level
* Faster array copies, including slices
* Much better constant folding
* Distutils support through a PythranExtension
* Improve implementation of many numpy functions
* Improve forward substitution
* Use most recent nt2 version
* Make dependency on libgomp optional
0.5 2014-05-17 Serge Guelton <[email protected]>
* Improved C++ compilation time (twice as fast)
* Efficient extended slicing
* Support most numpy dtype ([u]int8,..., [u]int64, float32, float64)
* Support indexing array through boolean array
* Add a nice Pythran logo :-)
* Improve validation *a lot*
* Reduce native module loading overhead
* Forward substitution implementation
* More numpy support and *many* bug fixes!
* Remove array auto vectorization/parallelization