Open pfalcon opened 4 years ago
I went to port numpile to Pycopy-the-unbloated-Python, result is here: https://github.com/pfalcon/numpile/tree/pycopy . It uses https://github.com/pfalcon/ullvmlite , which is in turn uses https://github.com/pfalcon/ullvm_c , which is pure-Python bindings for LLVM C API. It's all somewhat WIP now of course.
OK, my turn with factoring-out fork of numpile: https://github.com/pfalcon/picompile/ . The original LICENSE file is there, the code is split into 10 modules. Intended also to be perfectilized, without useless fix-up commits, so likely will be rebased.
Somewhat related: I personally feel some reservations on hacking too deep into numpile, because I'm not sure how unification-based type inference (as employed by numpile) compares to other well-known type inferencing algorithms, like Hindley-Milner (aka algorithm W). The paper "Generalizing Hindley-Milner Type Inference Algorithms" (http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.18.9348&rep=rep1&type=pdf) answers this, by arguing that algo W is just an adhoc optimization of a general unification algorithm. Discussion in more detail here: https://github.com/alehander92/Airtight/issues/2#issuecomment-597902078
While the license violation is probably true, this is just based on a educational talk I gave at Harvard so if a bunch of students are forking it then that's the purpose. It's just a toy for people to play with.
Sure, this ticket and list is kinda intended to be a guide for people who liked numpile and want to hack on it further. Then after some looking around (if they do looking around! many don't), they may learn/figure out:
Then, I'd consider it a good idea to start a fork survey based on the licensing/copyright compliance matters, ahead even of technical matters. Because if there's some technical advanceness of a particular fork, but muddy situation with licensing/copyright, then chances are, only frustration will come out of somebody further working on it.
Following thru all this stuff, I decided to start my own humble fork on the original numpile, effectively repeating work done by other folks, instead of making further progress (and indeed, I didn't have much further progress so far). At least I'm trying to not make mistakes mentioned above. (I definitely still may make goofs, so I'm open to suggestions or criticism).
For information of people who may be interested in doing further work on numpile, already known forks (in the order of appearance):
https://github.com/lidavidm/accelerando by @lidavidm, what's done: split the code in 2 files (which apparently isn't enough). Pretty good commit history, tries to recreate features of numpile step by step.
https://github.com/mattpaletta/numpile by @mattpaletta, what's done: split codebase in fine-grained way, but then commit history isn't fine-grained at all.
Both of these forks are problematic from copyright/licensing point of view - they are clearly based on numpile, and include substantial portions of it, but violate the following clause from numpile's license: