-
Greatly enhanced performance for passing and returning tuples ([#4042]).
-
Tuples (of integers, symbols, or bools) can now be used as type parameters ([#5164]).
-
import module: name1, name2, ...
([#5214]).
GitHub
module for interacting with the GitHub API
-
Multi-key dictionaries:
D[x,y...]
is now a synonym forD[(x,y...)]
for associationsD
(#4870). -
big
is now vectorized (#4766) -
push!
andunshift!
can push multiple arguments (#4782) -
consume(p)
extended toconsume(p, args...)
, allowing it to optionally passargs...
back to the producer (#4775). -
nextpow
andprevpow
now return thea^n
values instead of the exponentn
(#4819) -
Dict(kv)
constructor for any iterator on (key,value) pairs. -
Overflow detection in
parseint
([#4874]). -
New Pkg.submit(pkg[,commit]) function to automatically submit a Github pull request to the package author.
-
Triple-quoted regex strings,
r"""..."""
([#4934]). -
New string type,
UTF16String
([#4930]). -
CharString
is renamed toUTF32String
([#4943]). -
Faster sparse
kron
([#4958]). -
rand
now supports arbitraryRanges
arguments ([#5059]). -
mod2pi
function ([#4799], [#4862]).
-
dense
is deprecated in favor offull
(#4759) -
The
Stat
type is renamedStatStruct
(#4670) -
set_rounding
,get_rounding
andwith_rounding
now take an additional argument specifying the floating point type to which they apply. The old behaviour and[get/set/with]_bigfloat_rounding
functions are deprecated (#5007)
The 0.2 release brings improvements to many areas of Julia. Among the most visible changes are support for 64-bit Windows, keyword arguments to functions, immutable types, a redesigned and polished package manager, a multimedia interface supporting usage of Julia in IPython, a built-in profiler, and major improvements to Julia's linear algebra, I/O, and parallel capabilities. These are accompanied by many other changes adding new features, enhancing the library's consistency, improving performance, increasing test coverage, easing installation, and expanding the documentation. While not part of Julia proper, the package ecosystem has also grown and matured considerably since the 0.1 release. See below for more information about the long list of changes that improve Julia's usability and performance.
-
Immutable types (#13).
-
Triple-quoted string literals (#70).
-
New infix operator
in
(e.g.x in S
), and corresponding functionin(x,S)
, replacingcontains(S,x)
function (#2703). -
New variable bindings on each for loop and comprehension iteration (#1571). For example, before this change:
julia> map(f->f(), { ()->i for i=1:3 }) 3-element Any Array: 3 3 3
and after:
julia> map(f->f(), { ()->i for i=1:3 }) 3-element Any Array: 1 2 3
-
Explicit relative importing (#2375).
-
Methods can be added to functions in other modules using dot syntax, as in
Foo.bar(x) = 0
. -
A semicolon is now allowed after an
import
orusing
statement (#4130). -
In an interactive session (REPL), you can use
;cmd
to runcmd
via an interactive shell. For example:julia> ;ls CONTRIBUTING.md Makefile VERSION deps/ julia@ ui/ DISTRIBUTING.md NEWS.md Windows.inc doc/ src/ usr/ LICENSE.md README.md base/ etc/ test/ Make.inc README.windows.md contrib/ examples/ tmp/
-
Sampling profiler (#2597).
-
Functions for examining stages of the compiler's output:
code_lowered
,code_typed
,code_llvm
, andcode_native
. -
Multimedia I/O API (display, writemime, etcetera) (#3932).
-
MPFR-based
BigFloat
(#2814), and many newBigFloat
operations. -
New half-precision IEEE floating-point type,
Float16
(#3467). -
Support for setting floating-point rounding modes (#3149).
-
methodswith
shows all methods with an argument of specific type. -
mapslices
provides a general way to perform operations on slices of arrays (#2204). -
repeat
function for constructing Arrays with repeated elements ([#3605]). -
Collections.PriorityQueue
type andCollections.heap
functions (#2920). -
quadgk
1d-integration routine (#3140). -
erfinv
anderfcinv
functions (#2987). -
varm
,stdm
(#2265). -
digamma
,invdigamma
,trigamma
andpolygamma
for calculating derivatives ofgamma
function ([#3233]). -
logdet
(#3070). -
Names for C-compatible types:
Cchar
,Clong
, etc. (#2370). -
cglobal
to access global variables (#1815). -
unsafe_pointer_to_objref
(#2468) andpointer_from_objref
(#2515). -
readandwrite
for external processes. -
I/O functions
readbytes
andreadbytes!
(#3878). -
flush_cstdio
function (#3949). -
ClusterManager makes it possible to support different types of compute clusters (#3649, #4014).
-
rmprocs
for removing processors from a parallel computing session. The system can also tolerate to some extent processors that die unexpectedly (#3050). -
interrupt
for interrupting worker processes (#3819). -
timedwait
does a polled wait for an event till a specified timeout. -
Condition
type withwait
andnotify
functions forTask
synchronization. -
versioninfo
provides detailed version information, especially useful when reporting and diagnosing bugs. -
detach
for running child processes in a separate process group. -
setenv
for passing environment variables to child processes. -
ifelse
eagerly-evaluated conditional function, especially useful for vectorized conditionals.
-
isequal
now returnsfalse
for numbers of different types. This makes it much easier to define hashing for new numeric types. Uses ofDict
with numeric keys might need to change to account for this increased strictness. -
A redesigned and rewritten
Pkg
system is much more robust in case of problems. The basic interface to adding and removing package requirements remains the same, but great deal of additional functionality for developing packages in-place was added. See the new packages chapter in the manual for further details. -
Sorting API updates (#3665) – see sorting functions.
-
The
delete!(d::Dict, key)
function has been split into separatepop!
anddelete!
functions (#3439).pop!(d,key)
removeskey
fromd
and returns the value that was associated with it; it throws an exception ifd
does not containkey
.delete!(d,key)
removeskey
fromd
and succeeds regardless of whetherd
containedkey
or not, returningd
itself in either case. -
Linear-algebra factorization routines (
lu
,chol
, etc.) now returnFactorization
objects (andlud
,chold
, etc. are deprecated; #2212). -
A number of improvements to sparse matrix capabilities and sparse linear algebra.
-
More linear algebra fixes and eigensolver hooks for
SymTridiagonal
,Tridiagonal
andBidiagonal
matrix types (#2606, #2608, #2609, #2611, #2678, #2713, #2720, #2725). -
Change
integer_valued
,real_valued
, and so on toisinteger
,isreal
, and so on, and semantics of the later are now value-based rather than type-based, unlike MATLAB/Octave (#3071).isbool
andiscomplex
are eliminated in favor of a generaliseltype
function. -
Transitive comparison of floats with rationals (#3102).
-
Fast prime generation with
primes
and fast primality testing withisprime
. -
sum
andcumsum
now use pairwise summation for better accuracy (#4039). -
Dot operators (
.+
,.*
etc.) now broadcast singleton dimensions of array arguments. This behavior can be applied to any function usingbroadcast(f, ...)
. -
combinations
,permutations
, andpartitions
now return iterators instead of a task, andinteger_partitions
has been renamed topartitions
(#3989, #4055). -
isreadable
/iswritable
methods added for more IO types (#3872). -
Much faster and improved
readdlm
andwritedlm
(#3350, #3468, #3483). -
Faster
matchall
(#3719), and various string and regex improvements. -
Documentation of advanced linear algebra features (#2807).
-
Support optional RTLD flags in
dlopen
(#2380). -
pmap
now works with any iterable collection. -
Options in
pmap
for retrying or ignoring failed tasks. -
New
sinpi(x)
andcospi(x)
functions to compute sine and cosine ofpi*x
more accurately (#4112). -
New implementations of elementary complex functions
sqrt
,log
,asin
,acos
,atan
,tanh
,asinh
,acosh
,atanh
with correct branch cuts (#2891). -
Improved behavior of
SubArray
(#4412, #4284, #4044, #3697, #3790, #3148, #2844, #2644 and various other fixes). -
New convenience functions in graphics API.
-
Improved backtraces on Windows and OS X.
-
Methods of
min
andmax
that do reductions were renamed tominimum
andmaximum
.min(x)
is nowminimum(x)
, andmin(x,(),dim)
is nowminimum(x,dim)
. (#4235) -
ComplexPair
was renamed toComplex
and madeimmutable
, andComplex128
and so on are now aliases to the newComplex
type. -
!
was added to the name of many mutating functions, e.g.,push
was renamedpush!
(#907). -
ref
renamed togetindex
, andassign
tosetindex!
(#1484). -
writeable
renamed towritable
(#3874). -
logb
andilogb
renamed toexponent
(#2516). -
quote_string
became a method ofrepr
. -
safe_char
,check_ascii
, andcheck_utf8
replaced byis_valid_char
,is_valid_ascii
, andis_valid_utf8
, respectively. -
each_line
,each_match
,begins_with
,ends_with
,parse_float
,parse_int
, andseek_end
replaced by:eachline
,eachmatch
, and so on (_
was removed) (#1539). -
parse_bin(s)
replaced byparseint(s,2)
;parse_oct(s)
replaced byparseint(s,8)
;parse_hex(s)
replaced byparseint(s,16)
. -
findn_nzs
replaced byfindnz
(#1539). -
DivideByZeroError
replaced byDivideError
. -
addprocs_ssh
,addprocs_ssh_tunnel
, andaddprocs_local
replaced byaddprocs
(with keyword options). -
remote_call
,remote_call_fetch
, andremote_call_wait
replaced byremotecall
,remotecall_fetch
, andremotecall_wait
. -
has
replaced byin
for sets and byhaskey
for dictionaries. -
diagmm
anddiagmm!
replaced byscale
andscale!
(#2916). -
unsafe_ref
andunsafe_assign
replaced byunsafe_load
andunsafe_store!
. -
add_each!
anddel_each!
replaced byunion!
andsetdiff!
. -
isdenormal
renamed toissubnormal
(#3105). -
expr
replaced by direct call toExpr
constructor. -
|
,&
,$
,-
, and~
for sets replaced byunion
,intersect
,symdiff
,setdiff
, andcomplement
(#3272). -
square
function removed. -
pascal
function removed. -
add
andadd!
forSet
replaced bypush!
. -
ls
function deprecated in favor ofreaddir
or;ls
in the REPL. -
start_timer
now expects arguments in units of seconds, not milliseconds. -
Shell redirection operators
|
,>
, and<
eliminated in favor of a new operator|>
(#3523). -
amap
is deprecated in favor of newmapslices
functionality. -
The
Reverse
iterator was removed since it did not work in many cases. -
The
gcd
function now returns a non-negative value regardless of the argument signs, and various other sign problems withinvmod
,lcm
,gcdx
, andpowermod
were fixed ([#4811]).
julia-release-*
executables renamed tojulia-*
, andlibjulia-release
renamed tolibjulia
(#4177).
Too numerous to mention.