conda-forge / numba-feedstock

A conda-smithy repository for numba.
BSD 3-Clause "New" or "Revised" License
0 stars 27 forks source link

Rebuild for python38 #38

Closed regro-cf-autotick-bot closed 4 years ago

regro-cf-autotick-bot commented 5 years ago

This PR has been triggered in an effort to update python38.

Notes and instructions for merging this PR:

  1. Please merge the PR only after the tests have passed.
  2. Feel free to push to the bot's branch to update this PR if needed. Please note that if you close this PR we presume that the feedstock has been rebuilt, so if you are going to perform the rebuild yourself don't close this PR until the your rebuild has been merged.

This package has the following downstream children: ale blaze compas elektronn2 fastparquet And potentially more. If this PR was opened in error or needs to be updated please add the bot-rerun label to this PR. The bot will close this PR and schedule another one.

This PR was created by the cf-regro-autotick-bot. The cf-regro-autotick-bot is a service to automatically track the dependency graph, migrate packages, and propose package version updates for conda-forge. If you would like a local version of this bot, you might consider using rever. Rever is a tool for automating software releases and forms the backbone of the bot's conda-forge PRing capability. Rever is both conda (conda install -c conda-forge rever) and pip (pip install re-ver) installable. Finally, feel free to drop us a line if there are any issues! This PR was generated by https://circleci.com/gh/regro/circle_worker/12221, please use this URL for debugging

conda-forge-linter commented 5 years ago

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

beckermr commented 5 years ago

@conda-forge-admin, please restart ci

djsutherland commented 5 years ago

Looks like a legitimate failure. https://github.com/numba/numba/pull/4755

stuartarchibald commented 5 years ago

Looks like a legitimate failure. numba/numba#4755

It is, the entire static analysis part of Numba had to be rewritten (along with a bunch of other lesser changes) to accommodate 3.8. The patch is large, under review and not in mainline yet.

jakirkham commented 5 years ago

Am curious, what caused it to be so complex? Did Python 3.8 make some fundamental changes?

stuartarchibald commented 5 years ago

Am curious, what caused it to be so complex? Did Python 3.8 make some fundamental changes?

Mainly down to Python 3.8 doing away with SETUP_LOOP and friends bytecodes which meant something very different was required in control flow/data flow analysis to identify and handle loops. @sklam has all the details.

jakirkham commented 5 years ago

Ah ok. Yeah that makes sense. Are they aware there are users of Python's bytecode?

stuartarchibald commented 4 years ago

Ah ok. Yeah that makes sense. Are they aware there are users of Python's bytecode?

@pitrou definitely is :) IIRC the bytecode is considered an implementation detail and not an API.

pitrou commented 4 years ago

Yes, bytecode is free to change in any Python feature release (and it definitely does).

sklam commented 4 years ago

The patch to adapt to py3.8 bytecode should make numba more tolerant to future bytecode changes. Instead of relying on heuristics on the structure or extra information of the bytecode (i.e SETUP_LOOP marks the exact start and end of a loop), it now does a symbolic trace to reconstruct the dataflow and controlflow info and turn the stack machine into a register machine. Luckily that we have accumulated a lot of tools---like the controlflow analysis that @pitrou has written and the new transformation pass manager that @stuartarchibald has written. These tools allow numba to stop relying on heuristics.

I'm not afraid of https://docs.python.org/3.9/whatsnew/3.9.html#cpython-bytecode-changes =)

I need to write up all the details once I find time.

henryiii commented 4 years ago

Numba 0.47 RC is out, so looking at past releases, should be about a week until full release; at that point 3.8 will be supported and this can move forward.