Category Archives: Programming Language

see from outside of compiler

Compiler is always fun when it accompanies with computer architecture. The research on programming system (& language) is what I want to do besides CAD/EDA and mathematics. Not sure it is related to my A+ score in programming language course in graduate school (sorry for the self-obsession :b).

The course I find more focus on implementation is CMU version taught by Prof. Todd C. Mowry

at computer science dept. The course repo is at http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15745-s14/www/handouts.html

The LLVM  is used in the course, which is very handy and important to play around with compiler.

The last page of

http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15745-s14/public/lectures/L6-LLVM-Part2-1up.pdf

shows the references such as writing pass.

For research related stuff, check this http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15745-s14/www/discussion_info/table_of_contents.pdf 

Julia @ Ubuntu 12.04

Julia has some issues when I compiled in Ubuntu 12.04. I modify a little on top of http://ubuntuhandbook.org/index.php/2013/08/install-gcc-4-8-via-ppa-in-ubuntu-12-04-13-04/

1.)  at terminals

sudo add-apt-repository ppa:ubuntu-toolchain-r/test

2.) Then install gcc 4.8,  g++ 4.8, gfortran-4.8

sudo apt-get update; sudo apt-get install gcc-4.8 g++-4.8 gfortran-4.8

3.) Once installed, run following commands one by one to use gcc 4.8 instead of previous version.

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 20
sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-4.8 20

Dropbox project Pyston’s setup

Finally, I have my Pyston  setup and execute python program. The installation guide is here. The time-consuming part is the plugin/prerequisite packages (also my laptop is mac, so I need to use Stanford University’s eduroam to access my server at University of California during this summer. Sometime it really slow my progress due to the non-local build up). For a beginner, I suggest to use the name “pyston” and “pyston_deps” at your “~/” location. If you change the name “pyston”, say, “pyston_howard”, you need to modify Makefile too. Otherwise, the “make check” will give you all “time-out” results. In my current version, the pass status test case in my machine has some randomly issue. The trouble maker is ~/pyston/test/tests/thread_memory_model_test.py, which cannot always pass. Sometimes, the result is Failed (time-out).

When I configured llvm, for pyston/src Makefile, we need llvm has following modes:

Debug-Asserts: make ENABLE_OPTIMIZED=0 DISABLE_ASSERTIONS=0

Release-Asserts: make ENABLE_OPTIMIZED=1 DISABLE_ASSERTIONS=1

Release: make ENABLE_OPTIMIZED=1 DISABLE_ASSERTIONS=1

The documented progress of pyston project can be found here in Kevin’s blog with tag “pyston”. More timely updates can be found here in github. According to the current development theme (email from pyston-dev) sent by Kevin: there are a couple big efforts are needed to boost the performance, e.g. improve/replace the implementation of GC performance, check here; improve Python-to-LLVM-IR time to improve inefficient analyses by hash maps of strings, check here.

PS: The reason why I play around Pyston is that I am stuck in the dorm of Stanford University before leaving for my research work at San Diego. The stay is caused by the fact that my car has some issues on the lights, and I had it sent to a body shop to repair. How inefficiency when insurance company cooperates with body shop/dealership. Bazinga?! I want to remind myself of the compiler and programming language courses, and reuse LLVM for my future research and potential ideas. Besides, I am a dropbox pro customer, who actually pays for the service every month! I would love to know what is going on there, even from outsider view. Also, please keep Julia in mind!