about summary refs log tree commit diff
path: root/pkgs/development/interpreters
Commit message (Collapse)AuthorAge
* Nixpkgs support for `dhall-to-nixpkgs`Gabriel Gonzalez2020-06-17
| | | | | | | | | | | | | | | | | | | | | | The motivation for this change is to enable a new Dhall command-line utility called `dhall-to-nixpkgs` which converts Dhall packages to buildable Nix packages. You can think of `dhall-to-nixpkgs` as the Dhall analog of `cabal2nix`. You can find the matching pull request for `dhall-to-nixpkgs` here: https://github.com/dhall-lang/dhall-haskell/pull/1826 The two main changes required to support `dhall-to-nixpkgs` are: * Two new `buildDhall{Directory,GitHub}Package` utilities are added `dhall-to-nixpkgs` uses these in the generated output * `pkgs.dhallPackages` now selects a default version for each package using the `prefer` utility All other versions are still buildable via a `passthru` attribute
* janet: 1.9.1 -> 1.10.0R. RyanTM2020-06-16
|
* Merge master into staging-nextFrederik Rietdijk2020-06-15
|\
| * Merge pull request #90249 from Ericson2314/fix-old-phpTimo Kaufmann2020-06-14
| |\ | | | | | | php < 7.4: Fix validation of PKG_CONFIG var
| | * php < 7.4: Fix validation of PKG_CONFIG varJohn Ericson2020-06-13
| | | | | | | | | | | | | | | | | | | | | They were assuming it is an absolute path, but it (conventionally) can be something to look up on the PATH too. Fixes #90202
* | | Merge master into staging-nextFrederik Rietdijk2020-06-13
|\| |
| * | treewide: use ffmpeg_3 explicitly if not wanted otherwiseDoron Behar2020-06-12
| |/ | | | | | | | | | | After making `ffmpeg` point to the latest `ffmpeg_4`, all packages that used `ffmpeg` without requiring a specific version now use ffmpeg_3 explicitly so they shouldn't change.
| * Revert "Merge pull request #89726 from doronbehar/ruby-gcc-ref"Matthew Bauer2020-06-11
| | | | | | | | | | This reverts commit 6590c338500a8e2939f0fd0bc21e23ab3dd41b91, reversing changes made to d659f968ba32395c7e2fce3b87b3047c7efd8d03.
| * Merge pull request #89726 from doronbehar/ruby-gcc-refMatthew Bauer2020-06-11
| |\ | | | | | | rubyMinimal: don't reference stdenv.cc
| | * rubyMinimal: Disable JIT support and remove cc refsDoron Behar2020-06-07
| | | | | | | | | | | | To make rubyMinimal truely minimal, it shouldn't reference stdenv.cc
| | * ruby: make removeReferencesToCC remove all cc refsDoron Behar2020-06-07
| | | | | | | | | | | | | | | `lib/ruby/${version}/<platform>/rbconfig.rb` records the compiler used for JIT.
| | * ruby: Enable to disable JIT supportDoron Behar2020-06-07
| | |
* | | python: don't use optimizations on DarwinFrederik Rietdijk2020-06-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also, don't use autoreconfHook on Darwin with Python 3. Darwin builds are still impure and fail with ld: warning: directory not found for option '-L/nix/store/6yhj9djska835wb6ylg46d2yw9dl0sjb-configd-osx-10.8.5/lib' ld: warning: directory not found for option '-L/nix/store/6yhj9djska835wb6ylg46d2yw9dl0sjb-configd-osx-10.8.5/lib' ld: warning: object file (/nix/store/0lsij4jl35bnhqhdzla8md6xiswgig5q-Libsystem-osx-10.12.6/lib/crt1.10.6.o) was built for newer OSX version (10.12) than being linked (10.6) DYLD_LIBRARY_PATH=/private/tmp/nix-build-python3-3.8.3.drv-0/Python-3.8.3 ./python.exe -E -S -m sysconfig --generate-posix-vars ;\ if test $? -ne 0 ; then \ echo "generate-posix-vars failed" ; \ rm -f ./pybuilddir.txt ; \ exit 1 ; \ fi /nix/store/dsb7d4dwxk6bzlm845z2zx6wp9a8bqc1-bash-4.4-p23/bin/bash: line 5: 72015 Killed: 9 DYLD_LIBRARY_PATH=/private/tmp/nix-build-python3-3.8.3.drv-0/Python-3.8.3 ./python.exe -E -S -m sysconfig --generate-posix-vars generate-posix-vars failed make: *** [Makefile:592: pybuilddir.txt] Error 1
* | | Merge branch 'master' into staging-nextVladimír Čunát2020-06-10
|\| | | | | | | | | | | ... to resolve a trivial conflict in libpcap.
| * | Merge branch 'staging-next'Vladimír Čunát2020-06-10
| |\ \
| * | | joker: 0.15.3 -> 0.15.4R. RyanTM2020-06-10
| | |/ | |/|
* | | pythonPackages.setuptoolsBuildHook: do not build in an isolated environmentDaniël de Kok2020-06-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a PEP 517 project file is present, pip will not install prerequisites in `site-packages`: https://pip.pypa.io/en/stable/reference/pip/#pep-517-and-518-support For the shell hook, this has the consequence that the generated temporary directory that is added to PYTHONPATH does not contain `site.py`. As a result, Python does not discover the Python module. Thus when a user executes nix-shell in a project, they cannot import the project's Python module. This change adds the `--no-build-isolation` option to pip when creating the editable environment, to correctly generate `site.py`, even when a `pyproject.toml` is present.
* | | pythonPackages.pipBuildHook: do not build in an isolated environmentDaniël de Kok2020-06-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a PEP 517 project file is present, pip will not install prerequisites in `site-packages`: https://pip.pypa.io/en/stable/reference/pip/#pep-517-and-518-support For the shell hook, this has the consequence that the generated temporary directory that is added to PYTHONPATH does not contain `site.py`. As a result, Python does not discover the Python module. Thus when a user executes nix-shell in a project, they cannot import the project's Python module. This change adds the `--no-build-isolation` option to pip when creating the editable environment, to correctly generate `site.py`, even when a `pyproject.toml` is present.
* | | Merge staging-next into stagingFrederik Rietdijk2020-06-05
|\ \ \ | | |/ | |/|
| * | Merge master into staging-nextFrederik Rietdijk2020-06-05
| |\|
| | * python39: fix build on macOSLuflosi2020-06-04
| | | | | | | | | | | | Basically the same changes as in 81d15948cc19c2584f13031518349327ce353c82 but for python3.9 instead of python3.8.
* | | python3Minimal: override python38, not python3Frederik Rietdijk2020-06-05
| | | | | | | | | | | | This avoids an infinite recursion, accidentally introduced in b7ff7465401257e9b0814bb68937a494c58de538.
* | | python3Minimal: disable optimizationsFrederik Rietdijk2020-06-04
| | | | | | | | | | | | No point for the bootstrapping.
* | | Revert "cpython: Optimize dynamic symbol tables, for a 6% speedup."Frederik Rietdijk2020-06-04
| | | | | | | | | | | | | | | | | | ofborg does not like fetching patches when the derivation is used during bootstrapping. This reverts commit 480c8d199166b2f8cd20e6e245d8a019329ec466.
* | | Merge pull request #84072 from gnprice/python-buildFrederik Rietdijk2020-06-04
|\ \ \ | | | | | | | | cpython: Use optimizations, for a 25% speedup.
| * | | cpython: Optimize dynamic symbol tables, for a 6% speedup.Greg Price2020-05-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I took a close look at how Debian builds the Python interpreter, because I noticed it ran substantially faster than the one in nixpkgs and I was curious why. One thing that I found made a material difference in performance was this pair of linker flags (passed to the compiler): -Wl,-O1 -Wl,-Bsymbolic-functions In other words, effectively the linker gets passed the flags: -O1 -Bsymbolic-functions Doing the same thing in nixpkgs turns out to make the interpreter run about 6% faster, which is quite a big win for such an easy change. So, let's apply it. --- I had not known there was a `-O1` flag for the *linker*! But indeed there is. These flags are unrelated to "link-time optimization" (LTO), despite the latter's name. LTO means doing classic compiler optimizations on the actual code, at the linking step when it becomes possible to do them with cross-object-file information. These two flags, by contrast, cause the linker to make certain optimizations within the scope of its job as the linker. Documentation is here, though sparse: https://sourceware.org/binutils/docs-2.31/ld/Options.html The meaning of -O1 was explained in more detail in this LWN article: https://lwn.net/Articles/192624/ Apparently it makes the resulting symbol table use a bigger hash table, so the load factor is smaller and lookups are faster. Cool. As for -Bsymbolic-functions, the documentation indicates that it's a way of saving lookups through the symbol table entirely. There can apparently be situations where it changes the behavior of a program, specifically if the program relies on linker tricks to provide customization features: https://bugs.launchpad.net/ubuntu/+source/xfe/+bug/644645 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=637184#35 But I'm pretty sure CPython doesn't permit that kind of trick: you don't load a shared object that tries to redefine some symbol found in the interpreter core. The stronger reason I'm confident using -Bsymbolic-functions is safe, though, is empirical. Both Debian and Ubuntu have been shipping a Python built this way since forever -- it was introduced for the Python 2.4 and 2.5 in Ubuntu "hardy", and Debian "lenny", released in 2008 and 2009. In those 12 years they haven't seen a need to drop this flag; and I've been unable to locate any reports of trouble related to it, either on the Web in general or on the Debian bug tracker. (There are reports of a handful of other programs breaking with it, but not Python/CPython.) So that seems like about as thorough testing as one could hope for. --- As for the performance impact: I ran CPython upstream's preferred benchmark suite, "pyperformance", in the same way as described in the previous commit. On top of that commit's change, the results across the 60 benchmarks in the suite are: The median is 6% faster. The middle half (aka interquartile range) is from 4% to 8% faster. Out of 60 benchmarks, 3 come out slower, by 1-4%. At the other end, 5 are at least 10% faster, and one is 17% faster. So, that's quite a material speedup! I don't know how big the effect of these flags is for other software; but certainly CPython tends to do plenty of dynamic linking, as that's how it loads extension modules, which are ubiquitous in the stdlib as well as popular third-party libraries. So perhaps that helps explain why optimizing the dynamic linker has such an impact.
| * | | cpython: Use autoreconfHook to rebuild configure script.Greg Price2020-05-13
| | | | | | | | | | | | | | | | In particular this will let us use patches that apply to configure.ac.
| * | | cpython: Use --enable-optimizations, for a 16% speedup.Greg Price2020-05-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Without this flag, the configure script prints a warning at the end, like this (reformatted): If you want a release build with all stable optimizations active (PGO, etc), please run ./configure --enable-optimizations We're doing a build to distribute to people for day-to-day use, doing things other than developing the Python interpreter. So that's certainly a release build -- we're the target audience for this recommendation. --- And, trying it out, upstream isn't kidding! I ran the standard benchmark suite that the CPython developers use for performance work, "pyperformance". Following its usage instructions: https://pyperformance.readthedocs.io/usage.html I ran the whole suite, like so: $ nix-shell -p ./result."$variant" --run ' cd $(mktemp -d); python -m venv venv; . venv/bin/activate pip install pyperformance pyperformance run -o ~/tmp/result.'"$variant"'.json ' and then examined the results with commands like: $ python -m pyperf compare_to --table -G \ ~/tmp/result.{$before,$after}.json Across all the benchmarks in the suite, the median speedup was 16%. (Meaning 1.16x faster; 14% less time). The middle half of them ranged from a 13% to a 22% speedup. Each of the 60 benchmarks in the suite got faster, by speedups ranging from 3% to 53%. --- One reason this isn't just the default to begin with is that, until recently, it made the build a lot slower. What it does is turn on profile-guided optimization, which means first build for profiling, then run some task to get a profile, then build again using the profile. And, short of further customization, the task it would use would be nearly the full test suite, which includes a lot of expensive and slow tests, and can easily take half an hour to run. Happily, in 2019 an upstream developer did the work to carefully select a more appropriate set of tests to use for the profile: https://github.com/python/cpython/commit/4e16a4a31 https://bugs.python.org/issue36044 This suite takes just 2 minutes to run. And the resulting final build is actually slightly faster than with the much longer suite, at least as measured by those standard "pyperformance" benchmarks. That work went into the 3.8 release, but the same list works great if used on older releases too. So, start passing that --enable-optimizations flag; and backport that good-for-PGO set of tests, so that we use it on all releases.
| * | | cpython: Drop unrecognized --with-threads configure flag.Greg Price2020-03-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The ./configure script prints a warning when passed this flag, starting with 3.7: configure: WARNING: unrecognized options: --with-threads The reason is that there's no longer such a thing as a build without threads. Eliminate the warning, by only passing the flag on the older releases that accept it. Upstream change and discussion: https://github.com/python/cpython/commit/a6a4dc816 https://bugs.python.org/issue31370
* | | | perl: 5.30.2 -> 5.30.3volth2020-06-04
| | | |
* | | | python3: now points to python38Frederik Rietdijk2020-06-04
| |/ / |/| | | | | | | | | | | | | | Note this also means python3Minimal is now also Python 3.8. This reverts commit eb1369670b5a4e616ff0cf4100616479b1fa3064 and adds more.
* | | Merge staging-next into stagingFrederik Rietdijk2020-05-29
|\ \ \ | | |/ | |/|
| * | Merge master into staging-nextFrederik Rietdijk2020-05-29
| |\ \
| | * | php.buildEnv: Let enabled extensions to pass through by defaulttalyz2020-05-29
| | | | | | | | | | | | | | | | | | | | If only extraConfig is specified in buildEnv, keep the currently enabled extensions active. Brought up in #89011.
* | | | Merge staging-next into stagingFrederik Rietdijk2020-05-27
|\| | |
| * | | Merge master into staging-nextFrederik Rietdijk2020-05-27
| |\| |
| | * | Merge pull request #88761 from r-ryantm/auto-update/rakudoRyan Mulligan2020-05-25
| | |\ \ | | | | | | | | | | rakudo: 2020.05 -> 2020.05.1
| | | * | rakudo: 2020.05 -> 2020.05.1R. RyanTM2020-05-24
| | | | |
| | * | | Merge pull request #84994 from r-ryantm/auto-update/spidermonkeyJan Tojnar2020-05-25
| | |\ \ \
| | | * | | spidermonkey_68: 68.4.2 -> 68.7.0R. RyanTM2020-04-11
| | | | | |
* | | | | | python38: 3.8.2 -> 3.8.3Frederik Rietdijk2020-05-27
| | | | | |
* | | | | | Python: fix virtualenv with Python 2Frederik Rietdijk2020-05-24
| | | | | |
* | | | | | Python tests: fix use of is_virtualenvFrederik Rietdijk2020-05-24
|/ / / / / | | | | | | | | | | | | | | | Too many tests set it.
* | | | | Merge master into staging-nextFrederik Rietdijk2020-05-24
|\| | | |
| * | | | python.tests: also test virtualenvFrederik Rietdijk2020-05-23
| | | | | | | | | | | | | | | | | | | | Test whether creating a virtualenv functions.
| * | | | pypy: Remove bootstrap python from closureadisbladis2020-05-23
| | |/ / | |/| |
* | | | Merge master into staging-nextFrederik Rietdijk2020-05-23
|\| | |
| * | | babashka: 0.0.94 -> 0.0.97Benjamin Andresen2020-05-21
| | | |
| * | | janet: 1.8.1 -> 1.9.1R. RyanTM2020-05-19
| | | |
* | | | Merge branch 'master' into staging-nextJan Tojnar2020-05-18
|\| | |