-
What does this print, #1
I feel like I spend a fair amount of time investigating corner cases of the Python language; Python is relatively well-documented, but the documentation falls very short of a full language specification, so often the only recourse is to write a test case and run against CPython as a reference. Sometimes the answers are pretty…
-
Results of GIL experiments in Pyston
Today I decided to end my recent experiments with removing the GIL from Pyston. A couple things happened to prompt me to do this: the non-GIL version is able to beat the GIL-version performance with 2 threads, and profiling is showing that any further work will be fairly involved. I’ve been experimenting with a prototype…
-
Python, the GIL, and Pyston
Lately, I’ve been thinking a bit about supporting parallelism in Pyston — this has been on my “wish list” for a long time. The state of parallelism in CPython is a bit of a sore subject, since the GIL (“global interpreter lock”) essentially enforces single-threaded execution. It should be noted that a GIL is not…
-
Update on Pyston
This blog’s been pretty neglected lately, so I thought I’d post about progress on Pyston, since that’s where most of my time has been going. The main two goals for Pyston are performance and language compatibility; for the 0.1 launch (the original blog post) I focused on the main performance techniques, and recently I’ve switched gears…
-
Progress on implementing exceptions for Pyston
I have to say, implementing exceptions for Pyston has been considerably harder than any of the other features I’ve implemented, including what seem like hard techniques such as inline caches and on-stack-replacement. I’d say it’s hard because 1) coming up with an IR representation of exceptions is difficult, and 2) actually implementing the exception-handling is…
-
Digging into exception handling
I’m currently working on implementing exceptions for Pyston, and this is a post about the process. My thought has always been to implement them “using native exceptions”, which I vaguely understood to involve personality functions and stack unwinding. Most Python internal protocols are exception-based (think: AttributeError or StopIteration), so any Python implementation will need some ability…
-
Interesting hosting provider: Digital Ocean
I just set up a bare-bones website for Pyston, which as of the time of this writing is just hosting the pyston-dev mailing list. When setting it up, I wanted a new cloud VM to serve it; my current one, which is serving the blog you’re currently reading, certainly has the capacity to run the…
-
Video: someone routing a full ARM SOM
I have no idea how to judge the quality of this work, but I thought the video was still very interesting: it’s a time-lapse video of someone routing a relatively-complicated ARM system-on-module. I found it interesting because I think it’s always instructive to see how other people work, which is something that I haven’t been…
-
Space Monkey’s migration from Python to Go
Pretty interesting writeup (including a reference to Pyston!): https://www.spacemonkey.com/blog/posts/go-space-monkey. I’m sure I’m primed to read it this way, but it sounds similar to what we sometimes go through at Dropbox or in my personal projects: trying to optimize a Python program, and getting to the point that it’s simply bottlenecked on the performance of a large…
-
JTAG programmer optimizations
In a recent post I talked about my first custom FPGA board and trying to get it up and running; the summary was that 1) my custom jtag programmer didn’t work right away with the FPGA, and 2) my jtag programming setup is very slow. I solved the first problem in that past, and spent a…