_ _ _ _(_)_ | (_) | (_) (_) | A fresh approach to technical computing _ _ _| |_ __ _ | | | | | | | |/ _` | | http://julialang.org | | |_| | | | (_| | | julia-math@googlegroups.com _/ |\__'_|_|_|\__'_| | |__/ | Julia is a very high level dynamic language for numerical and scientific computing with optional typing, multiple dispatch, and good performance, achieved by using type inference and just-in-time (JIT) compilation, implemented using LLVM. The language is multi-paradigm, combining features of functional, object-oriented, and imperative styles. For a more in-depth discussion of the rationale and advantages of Julia over other systems, see the [Introduction](https://github.com/JuliaLang/julia/wiki/Introduction) in the wiki, or [browse all](https://github.com/JuliaLang/julia/wiki/) of the wiki documentation. ## Resources - **Homepage:** - **Download:** - **Documentation:** - **Discussion:** ## Required Build Tools & External Libraries - **[GNU make][]** — building dependencies. - **[gcc, g++, gfortran][gcc]** — compiling and linking C, C++ and Fortran code. - **[curl][]** — to automatically download external libraries: - **[fdlibm][]** — a portable implementation of much of the system-dependent libm math library's functionality. - **[MT][]** — a fast Mersenne Twister pseudorandom number generator library. - **[OpenBLAS][]** — a fast, open, and maintained [basic linear algebar subprograms (BLAS)](http://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms) library, based on [Kazushige Goto's](http://en.wikipedia.org/wiki/Kazushige_Goto) famous [GotoBLAS](http://www.tacc.utexas.edu/tacc-projects/gotoblas2/). - **[LAPACK][]** — library of linear algebra routines for solving systems of simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue problems, and singular value problems. - **[ARPACK][]** — a collection of subroutines designed to solve large, sparse eigenvalue problems. - **[FFTW][]** — library for computing fast Fourier transforms very quickly and efficiently. - **[PCRE][]** — Perl-compatible regular expressions library. - **[GNU readline][]** — library allowing shell-like line editing in the terminal, with history and familiar key bindings. - **[mongoose][]** — library for writing simple web servers, used for Julia's web-based repl. [GNU make]: http://www.gnu.org/software/make/ [gcc]: http://gcc.gnu.org/ [curl]: http://curl.haxx.se/ [fdlibm]: http://www.netlib.org/fdlibm/readme [MT]: http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html [OpenBLAS]: https://github.com/xianyi/OpenBLAS#readme [LAPACK]: http://www.netlib.org/lapack/ [ARPACK]: http://www.caam.rice.edu/software/ARPACK/ [FFTW]: http://www.fftw.org/ [PCRE]: http://www.pcre.org/ [GNU readline]: http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html [mongoose]: http://code.google.com/p/mongoose/ ## Supported Platforms - **GNU/Linux:** x86 (32-bit); x86/64 (64-bit). - **OS X:** x86/64 (64-bit); x86 (32-bit) is untested but should work. ## Compilation - Run `make` in the top-level directory to build julia. It will automatically download and build its external dependencies, when compiled the first time (this takes a while). No installation is required — julia is currently run from the directory where it was built. You might want to make a symbolic link for the executable, for example `ln -s JULIA_PATH/julia ~/bin/julia`. ## Directories attic/ old, now-unused code contrib/ emacs and textmate support for julia doc/ miscellaneous documentation and notes external/ external dependencies j/ source code for julia's standard library lib/ shared libraries loaded by julia's standard libraries src/ source for julia language core test/ unit and function tests for julia itself ui/ source for various frontends ## Emacs Setup Add the following line to `~/.emacs` (require 'julia-mode "JULIA_PATH/contrib/julia-mode.el") where `JULIA_PATH` is the location of the top-level julia directory. ## TextMate Setup Copy (or symlink) the TextMate Julia bundle into the TextMate application support directory: cp -r JULIA_PATH/contrib/Julia.tmbundle ~/Library/Application\ Support/TextMate/Bundles/ where `JULIA_PATH` is the location of the top-level julia directory. Now select from the menu in TextMate `Bundles > Bundle Editor > Reload Bundles`. Julia should appear as a file type and be automatically detected for files with the `.j` extension.