Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 224 lines (164 sloc) 11.964 kB
35b95b8 @StefanKarpinski Allow HTML links to the README banner.
StefanKarpinski authored
1 <a name="banner"/>
2
554dfc2 @StefanKarpinski Convert README to Markdown.
StefanKarpinski authored
3 _
4 _ _ _(_)_ |
5 (_) | (_) (_) | A fresh approach to technical computing
6 _ _ _| |_ __ _ |
25d5c06 @JeffBezanson adding IRC channel to readme
JeffBezanson authored
7 | | | | | | |/ _` | | http://julialang.org
dcdbd55 @JeffBezanson mailing list change
JeffBezanson authored
8 | | |_| | | | (_| | | julia-dev@googlegroups.com
25d5c06 @JeffBezanson adding IRC channel to readme
JeffBezanson authored
9 _/ |\__'_|_|_|\__'_| | #julia on freenode
554dfc2 @StefanKarpinski Convert README to Markdown.
StefanKarpinski authored
10 |__/ |
11
72522d1 @ViralBShah Update README
ViralBShah authored
12
519a96a @StefanKarpinski Integrate new highlights better into README; copy edits.
StefanKarpinski authored
13 <a name="The-Julia-Language"/>
35b95b8 @StefanKarpinski Allow HTML links to the README banner.
StefanKarpinski authored
14 ## The Julia Language
72522d1 @ViralBShah Update README
ViralBShah authored
15
e66ca1d @StefanKarpinski Delete README contents; merge INSTALL back into README and update.
StefanKarpinski authored
16 Julia is a high-level, high-performance dynamic language for technical computing.
17 The main homepage for Julia can be found at [julialang.org](http://julialang.org/).
18 This is the GitHub repository of Julia source code, including instructions for compiling and installing Julia, below.
cb2ad6f @ViralBShah Put installation instructions in a separate file.
ViralBShah authored
19
38f67db @StefanKarpinski Add HTML anchors for each header.
StefanKarpinski authored
20 <a name="Resources"/>
7b63277 @StefanKarpinski Add Resources section.
StefanKarpinski authored
21
22 - **Homepage:** <http://julialang.org>
a9647ab @ViralBShah Add a URL for IRC.
ViralBShah authored
23 - **Mailing list:** <http://groups.google.com/group/julia-dev/>
24 - **IRC:** <http://webchat.freenode.net/?channels=julia>
5f41fe2 @StefanKarpinski Add Git clone URL to the Resources section.
StefanKarpinski authored
25 - **Source code:** <https://github.com/JuliaLang/julia>
90eaff4 @ViralBShah Remove link to "below" in README.md for installation. Not needed
ViralBShah authored
26 - **Git clone URL:** <git://github.com/JuliaLang/julia.git>
d2f6289 @ViralBShah Add AMOS to README.
ViralBShah authored
27 - **Documentation:** <http://julialang.org/manual/>
7b63277 @StefanKarpinski Add Resources section.
StefanKarpinski authored
28
d2f6289 @ViralBShah Add AMOS to README.
ViralBShah authored
29 <a name="Currently-Supported-Platforms"/>
30 ## Currently Supported Platforms
e66ca1d @StefanKarpinski Delete README contents; merge INSTALL back into README and update.
StefanKarpinski authored
31
32 - **GNU/Linux:** x86/64 (64-bit); x86 (32-bit).
e18cb47 @ViralBShah julia works fine on OS X 32-bit, as reported in #411
ViralBShah authored
33 - **Darwin/OS X:** x86/64 (64-bit); x86 (32-bit).
961ac1f @peerst Add plattform specific notes how to build on FreeBSD
peerst authored
34 - **FreeBSD:** x86/64 (64-bit); x86 (32-bit).
e66ca1d @StefanKarpinski Delete README contents; merge INSTALL back into README and update.
StefanKarpinski authored
35
36 <a name="Source-Download-Compilation"/>
37 ## Source Download & Compilation
38
c84deda @ViralBShah Update README
ViralBShah authored
39 First, acquire the source code by cloning the git repository:
e66ca1d @StefanKarpinski Delete README contents; merge INSTALL back into README and update.
StefanKarpinski authored
40
41 git clone git://github.com/JuliaLang/julia.git
42
a059815 @JeffBezanson readme updates
JeffBezanson authored
43 Next, enter the `julia/` directory and run `make` to build the `julia` executable. To perform a parallel build, use `make -j N` and supply the maximum number of concurrent processes.
e66ca1d @StefanKarpinski Delete README contents; merge INSTALL back into README and update.
StefanKarpinski authored
44 When compiled the first time, it will automatically download and build its [external dependencies](#Required-Build-Tools-External-Libraries).
45 This takes a while, but only has to be done once.
3bf99b7 @StefanKarpinski Further edits and formatting to README.
StefanKarpinski authored
46
47 **Note:** the build process will not work if any of the build directory's parent directories have spaces in their names (this is due to a limitation in GNU make).
e66ca1d @StefanKarpinski Delete README contents; merge INSTALL back into README and update.
StefanKarpinski authored
48
49 Once it is built, you can either run the `julia` executable using its full path in the directory created above, or add that directory to your executable path so that you can run the julia program from anywhere:
50
51 export PATH="$(pwd)/julia:$PATH"
52
53 Now you should be able to run julia like this:
54
55 julia
56
57 If everything works correctly, you will see a Julia banner and an interactive prompt into which you can enter expressions for evaluation.
e8524a7 @arlolra typo
arlolra authored
58 You can read about [getting started](http://julialang.org/manual/getting-started) in the manual.
e66ca1d @StefanKarpinski Delete README contents; merge INSTALL back into README and update.
StefanKarpinski authored
59
60 <a name="Platform-Specific-Notes"/>
61 ### Platform-Specific Notes
62
d151f22 @ViralBShah Remove some outdated instructions from README.md
ViralBShah authored
63 On some Linux distributions you may need to change how the readline library is linked. If you get a build error involving readline, try changing the value of `USE_SYSTEM_READLINE` in `Make.inc` to `1`.
e66ca1d @StefanKarpinski Delete README contents; merge INSTALL back into README and update.
StefanKarpinski authored
64
65 On Ubuntu, you may also need to install the package `libncurses5-dev`.
66
d2bbaa5 @JeffBezanson removing suggestion to install gfortran with homebrew
JeffBezanson authored
67 On OS X, you may need to install `gfortran`. Either download and install [gfortran from hpc.sf.net](http://hpc.sf.net/), or [64-bit gfortran from gcc.gnu.org](http://gcc.gnu.org/wiki/GFortranBinaries).
e0bdc5a @JeffBezanson adding a README note for isue #380
JeffBezanson authored
68
f3b295c @JeffBezanson close #636
JeffBezanson authored
69 If you get link errors mentioning `gfortran`, it might help to put `/usr/local/gfortran/lib` at the beginning of the `DYLD_LIBRARY_PATH` environment variable.
70
961ac1f @peerst Add plattform specific notes how to build on FreeBSD
peerst authored
71 On FreeBSD the prerequisites can be installed from ports like this:
72
41fb44c @peerst Add gmake to the prerequisites.
peerst authored
73 cd /usr/ports/devel/gmake
74 make install
75
961ac1f @peerst Add plattform specific notes how to build on FreeBSD
peerst authored
76 cd /usr/ports/ftp/curl
77 make install
78
79 cd /usr/ports/devel/libunwind
80 make install
81
82 cd /usr/ports/lang/gcc45
83 make install
1bf0d3b @peerst Fixed typo in gfortran ln -s for FreeBSD
peerst authored
84 ln -s /usr/local/bin/gfortran45 /usr/local/bin/gfortran
961ac1f @peerst Add plattform specific notes how to build on FreeBSD
peerst authored
85
4625ffa @StefanKarpinski A couple of edits and fixes to the README.
StefanKarpinski authored
86 Other versions of gcc are also exist but currently gfortran45 is the one used by all the ports that depend on Fortran.
961ac1f @peerst Add plattform specific notes how to build on FreeBSD
peerst authored
87
41fb44c @peerst Add gmake to the prerequisites.
peerst authored
88 **Use the gmake command on FreeBSD instead of make**
89
e66ca1d @StefanKarpinski Delete README contents; merge INSTALL back into README and update.
StefanKarpinski authored
90 <a name="Required-Build-Tools-External-Libraries"/>
91 ## Required Build Tools & External Libraries
92
19adf54 @JeffBezanson fix readme typo
JeffBezanson authored
93 Building Julia requires that the following software be installed:
e66ca1d @StefanKarpinski Delete README contents; merge INSTALL back into README and update.
StefanKarpinski authored
94
533ac29 @StefanKarpinski Some formatting fixes in the README.
StefanKarpinski authored
95 - **[GNU make]** — building dependencies.
e66ca1d @StefanKarpinski Delete README contents; merge INSTALL back into README and update.
StefanKarpinski authored
96 - **[gcc, g++, gfortran][gcc]** — compiling and linking C, C++ and Fortran code.
0c6d33d @ViralBShah Remove non-git method of building from source. Git is now a required
ViralBShah authored
97 - **[git]** — contributions and version control.
3bf99b7 @StefanKarpinski Further edits and formatting to README.
StefanKarpinski authored
98 - **[perl]** — preprocessing of header files of libraries.
0c6d33d @ViralBShah Remove non-git method of building from source. Git is now a required
ViralBShah authored
99 - **[wget]** or **[curl]** — to automatically download external libraries (Linux defaults to `wget`, OS X and FreeBSD to `curl`).
12e9cda @pao M4 isn't part of Debian/Ubuntu build-essential, so it's probably wort…
pao authored
100 - **[m4]** — needed to build GMP.
d2f6289 @ViralBShah Add AMOS to README.
ViralBShah authored
101
3bf99b7 @StefanKarpinski Further edits and formatting to README.
StefanKarpinski authored
102 With the exception of `gfortran`, these are standard on most Linux systems and on any OS X system with `Xcode` and Apple's Developer Tools installed.
4625ffa @StefanKarpinski A couple of edits and fixes to the README.
StefanKarpinski authored
103 Julia uses the following external libraries, which are automatically downloaded (or in a few cases, included in the Julia source repository) and then compiled from source the first time you run `make`:
d2f6289 @ViralBShah Add AMOS to README.
ViralBShah authored
104
105 - **[LLVM]** — compiler infrastructure. Currently, julia requires LLVM 3.0.
a059815 @JeffBezanson readme updates
JeffBezanson authored
106 - **[FemtoLisp]** — packaged with julia source, and used to implement the compiler front-end.
d2f6289 @ViralBShah Add AMOS to README.
ViralBShah authored
107 - **[GNU readline]** — library allowing shell-like line editing in the terminal, with history and familiar key bindings.
108 - **[fdlibm]** — a portable implementation of much of the system-dependent libm math library's functionality.
109 - **[MT]** — a fast Mersenne Twister pseudorandom number generator library.
110 - **[OpenBLAS]** — a fast, open, and maintained [basic linear algebra 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/).
111 - **[LAPACK]** — a 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.
a059815 @JeffBezanson readme updates
JeffBezanson authored
112 - **[AMOS]** — subroutines for computing Bessel and Airy functions.
d2f6289 @ViralBShah Add AMOS to README.
ViralBShah authored
113 - **[SuiteSparse]** — a library of linear algebra routines for sparse matrices.
114 - **[ARPACK]** — a collection of subroutines designed to solve large, sparse eigenvalue problems.
115 - **[FFTW]** — library for computing fast Fourier transforms very quickly and efficiently.
116 - **[PCRE]** — Perl-compatible regular expressions library.
4625ffa @StefanKarpinski A couple of edits and fixes to the README.
StefanKarpinski authored
117 - **[GMP]** — the GNU multiple precision arithmetic library, needed for bigint support
d2f6289 @ViralBShah Add AMOS to README.
ViralBShah authored
118 - **[D3]** — JavaScript visualization library.
a059815 @JeffBezanson readme updates
JeffBezanson authored
119 - **[double-conversion]** — efficient number-to-text conversion.
e66ca1d @StefanKarpinski Delete README contents; merge INSTALL back into README and update.
StefanKarpinski authored
120
121 [GNU make]: http://www.gnu.org/software/make/
122 [gcc]: http://gcc.gnu.org/
bab5ac1 @StefanKarpinski Fix the link to wget.
StefanKarpinski authored
123 [wget]: http://www.gnu.org/software/wget/
3bf99b7 @StefanKarpinski Further edits and formatting to README.
StefanKarpinski authored
124 [curl]: http://curl.haxx.se/
4625ffa @StefanKarpinski A couple of edits and fixes to the README.
StefanKarpinski authored
125 [git]: http://git-scm.com/
3bf99b7 @StefanKarpinski Further edits and formatting to README.
StefanKarpinski authored
126 [perl]: http://www.perl.org/
12e9cda @pao M4 isn't part of Debian/Ubuntu build-essential, so it's probably wort…
pao authored
127 [m4]: https://www.gnu.org/software/m4/
e66ca1d @StefanKarpinski Delete README contents; merge INSTALL back into README and update.
StefanKarpinski authored
128 [fdlibm]: http://www.netlib.org/fdlibm/readme
129 [MT]: http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html
130 [OpenBLAS]: https://github.com/xianyi/OpenBLAS#readme
131 [LAPACK]: http://www.netlib.org/lapack/
bab5ac1 @StefanKarpinski Fix the link to wget.
StefanKarpinski authored
132 [SuiteSparse]: http://www.cise.ufl.edu/research/sparse/SuiteSparse/
3bf99b7 @StefanKarpinski Further edits and formatting to README.
StefanKarpinski authored
133 [AMOS]: http://netlib.org/amos
c627f25 @ViralBShah Update installation instructions
ViralBShah authored
134 [ARPACK]: http://forge.scilab.org/index.php/p/arpack-ng/
e66ca1d @StefanKarpinski Delete README contents; merge INSTALL back into README and update.
StefanKarpinski authored
135 [FFTW]: http://www.fftw.org/
136 [PCRE]: http://www.pcre.org/
137 [LLVM]: http://www.llvm.org/
3bf99b7 @StefanKarpinski Further edits and formatting to README.
StefanKarpinski authored
138 [FemtoLisp]: https://github.com/JeffBezanson/femtolisp
d2f6289 @ViralBShah Add AMOS to README.
ViralBShah authored
139 [GNU readline]: http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html
6613651 @aviks more explicit convert; additonal tests; add GMP to docs
aviks authored
140 [GMP]: http://gmplib.org/
e66ca1d @StefanKarpinski Delete README contents; merge INSTALL back into README and update.
StefanKarpinski authored
141 [D3]: http://mbostock.github.com/d3/
a059815 @JeffBezanson readme updates
JeffBezanson authored
142 [double-conversion]: http://double-conversion.googlecode.com/
e66ca1d @StefanKarpinski Delete README contents; merge INSTALL back into README and update.
StefanKarpinski authored
143
144 <a name="Directories"/>
145 ## Directories
146
147 attic/ old, now-unused code
05659ca @JeffBezanson fix directories in readme
JeffBezanson authored
148 base/ source code for julia's standard library
e66ca1d @StefanKarpinski Delete README contents; merge INSTALL back into README and update.
StefanKarpinski authored
149 contrib/ emacs and textmate support for julia
150 examples/ example julia programs
33dd8e1 @StefanKarpinski Rename: external/ => deps/ [closes #726].
StefanKarpinski authored
151 deps/ external dependencies
05659ca @JeffBezanson fix directories in readme
JeffBezanson authored
152 extras/ useful optional libraries
e66ca1d @StefanKarpinski Delete README contents; merge INSTALL back into README and update.
StefanKarpinski authored
153 lib/ shared libraries loaded by julia's standard libraries
154 src/ source for julia language core
05659ca @JeffBezanson fix directories in readme
JeffBezanson authored
155 test/ unit and function test cases
e66ca1d @StefanKarpinski Delete README contents; merge INSTALL back into README and update.
StefanKarpinski authored
156 ui/ source for various front ends
157
a63ebea @StefanKarpinski Move Binary Installation section further down.
StefanKarpinski authored
158 <a name="Binary-Installation"/>
159 ## Binary Installation
160
ed6d8af @JeffBezanson adding link to AUR package
JeffBezanson authored
161 Because of the rapid pace of development at this point, we recommend installing the latest Julia from source, but platform-specific tarballs with pre-compiled binaries are also [available for download](https://github.com/JuliaLang/julia/downloads).
01b6b23 @StefanKarpinski Fix README formatting; update binary install instructions.
StefanKarpinski authored
162 To install from source, download the appropriate tarball and untar it somewhere.
163 For example, if you are on an OS X (Darwin) x86/64 system, do the following:
a63ebea @StefanKarpinski Move Binary Installation section further down.
StefanKarpinski authored
164
c627f25 @ViralBShah Update installation instructions
ViralBShah authored
165 wget https://github.com/downloads/JuliaLang/julia/julia-c4865bd18d-Darwin-i386.tar.gz
166 tar zxvf julia-c4865bd18d-Darwin-i386.tar.gz
a63ebea @StefanKarpinski Move Binary Installation section further down.
StefanKarpinski authored
167
168 You can either run the `julia` executable using its full path in the directory created above, or add that directory to your executable path so that you can run the julia program from anywhere:
169
170 export PATH="$(pwd)/julia:$PATH"
171
172 Now you should be able to run julia like this:
173
174 julia
175
176 If everything works correctly, you will see a Julia banner and an interactive prompt into which you can enter expressions for evaluation.
4625ffa @StefanKarpinski A couple of edits and fixes to the README.
StefanKarpinski authored
177 You can read about [getting started](http://julialang.org/manual/getting-started) in the manual.
a63ebea @StefanKarpinski Move Binary Installation section further down.
StefanKarpinski authored
178
ed6d8af @JeffBezanson adding link to AUR package
JeffBezanson authored
179 An [Arch Linux package](https://aur.archlinux.org/packages.php?ID=56877) is also available.
180
e66ca1d @StefanKarpinski Delete README contents; merge INSTALL back into README and update.
StefanKarpinski authored
181 <a name="Editor-Terminal-Setup"/>
182 ## Editor & Terminal Setup
183
f25432d @ViralBShah Remove description of configuring editors from contrib.
ViralBShah authored
184 Currently, [julia editing mode](https://github.com/JuliaLang/julia/wiki/Configuring-Editors) support is available for Emacs, Vim, and Textmate.
e66ca1d @StefanKarpinski Delete README contents; merge INSTALL back into README and update.
StefanKarpinski authored
185
186 Adjusting your terminal bindings is optional; everything will work fine without these key bindings.
187 For the best interactive session experience, however, make sure that your terminal emulator (`Terminal`, `iTerm`, `xterm`, etc.) sends the `^H` sequence for `Backspace` (delete key) and that the `Shift-Enter` key combination sends a `\n` newline character to distinguish it from just pressing `Enter`, which sends a `\r` carriage return character.
188 These bindings allow custom readline handlers to trap and correctly deal with these key sequences; other programs will continue behave normally with these bindings.
189 The first binding makes backspacing through text in the interactive session behave more intuitively.
190 The second binding allows `Shift-Enter` to insert a newline without evaluating the current expression, even when the current expression is complete.
191 (Pressing an unmodified `Enter` inserts a newline if the current expression is incomplete, evaluates the expression if it is complete, or shows an error if the syntax is irrecoverably invalid.)
192
193 On Linux systems, the `Shift-Enter` binding can be set by placing the following line in the file `.xmodmaprc` in your home directory:
194
195 keysym Return = Return Linefeed
4c1f24d @ViralBShah Web repl and graphics notes in the README.
ViralBShah authored
196
197 <a name="Web-REPL-and-grahpics">
198 ## Web REPL and graphics
199
3bf99b7 @StefanKarpinski Further edits and formatting to README.
StefanKarpinski authored
200 Julia has a web REPL with very preliminary graphics capabilities.
201 Follow these instructions for setting up the web repl locally.
33dd8e1 @StefanKarpinski Rename: external/ => deps/ [closes #726].
StefanKarpinski authored
202 In deps, doing `make install-lighttpd` will download and build lighttpd.
3bf99b7 @StefanKarpinski Further edits and formatting to README.
StefanKarpinski authored
203 Use the launch-webserver script to start the webserver and web-repl.
204 Point your browser to `http://localhost:2000/`.
4c1f24d @ViralBShah Web repl and graphics notes in the README.
ViralBShah authored
205 Try `plot(cumsum(randn(1000)))`
206
165a81e Add a link to the public repl in the readme
Adam Savitzky authored
207 ### Run it Online
208 [julia.forio.com](http://julia.forio.com)
209
3bf99b7 @StefanKarpinski Further edits and formatting to README.
StefanKarpinski authored
210 ### Pre-installed lighttpd
4c1f24d @ViralBShah Web repl and graphics notes in the README.
ViralBShah authored
211
3bf99b7 @StefanKarpinski Further edits and formatting to README.
StefanKarpinski authored
212 If you want to use your own `lighttpd`, then the process is something like this:
4c1f24d @ViralBShah Web repl and graphics notes in the README.
ViralBShah authored
213
3bf99b7 @StefanKarpinski Further edits and formatting to README.
StefanKarpinski authored
214 1. Install `lighttpd`
215 2. Configure `lighttpd`:
216 The config file is `/etc/lighttpd/lighttpd.conf`. Add `mod_scgi` to `server.modules`.
217 Set `server.document-root` to point to `/path/to/julia/ui/website`.
218 Add something like this to the bottom (you can use whatever port you want):
219 `scgi.server = (".scgi" => (("host" => "127.0.0.1", "port" => 2001)))`.
4c1f24d @ViralBShah Web repl and graphics notes in the README.
ViralBShah authored
220
3bf99b7 @StefanKarpinski Further edits and formatting to README.
StefanKarpinski authored
221 3. Start lighttpd: `sudo /etc/init.d/lighttpd start`.
222 4. Start the julia server: `path/to/julia/julia-release-webserver -p 2001`.
223 5. Point your browser to `http://localhost:2001`.
Something went wrong with that request. Please try again.