Skip to content

Latest commit

 

History

History
327 lines (229 loc) · 12 KB

NEWS.md

File metadata and controls

327 lines (229 loc) · 12 KB

Julia v0.2.0 Release Notes

New language features

  • Keyword & optional function arguments (#485, #1817).

  • Immutable types (#13).

  • Triple-quoted string literals (#70).

  • New infix operator in (e.g. x in S), and corresponding function in(x,S), replacing contains(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 or using statement (#4130).

New library functions

  • Sampling profiler (#2597).

  • Functions for examining stages of the compiler's output: code_lowered, code_typed, code_llvm, and code_native

  • Multimedia I/O API (display, writemime, etcetera) (#3932).

  • MPFR-based BigFloat (#2814), and many new BigFloat 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)

  • Collections.PriorityQueue type and Collections.heap functions (#2920).

  • quadgk 1d-integration routine (#3140).

  • erfinv and erfcinv functions (#2987).

  • varm, stdm (#2265)

  • logdet (#3070)

  • names for C-compatible types: Cchar, Clong, etc. (#2370).

  • cglobal to access global variables (#1815)

  • unsafe_pointer_to_objref (#2468) and pointer_from_objref (#2515)

  • readandwrite for external processes

  • I/O functions readbytes and readbytes! (#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 with wait and notify functions for synchronizing Tasks

  • versioninfo provides detailed version information

  • 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

Library improvements

  • isequal now returns false for numbers of different types. This makes it easier to define hash functions for new numeric types. Uses of Dict with numeric keys might need to change to account for this increased strictness.

  • Rewritten Pkg system for much greater robustness in case of failures, versioned dependencies, and many other enhancements.

  • Sort API updates (#3665).

  • delete!(d::Dict, key) has now been split into separate pop! and delete! variants: the former returns the deleted value and behaves like the old delete!, and the latter returns d and does not throw an exception if key was not found (#3439).

  • Linear-algebra factorization routines (lu, chol, etc.) now return Factorization objects (and lud, 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 and Bidiagonal matrix types (#2606, #2608, #2609, #2611, #2678, #2713, #2720, #2725)

  • Change integer_valued, real_valued, and so on to isinteger, isreal, and so on, and semantics of the later are now value-based rather than type-based, unlike Matlab/Octave (#3071). isbool and iscomplex are eliminated in favor of general iseltype function.

  • Transitive comparison of floats with rationals (#3102).

  • Fast primality testing (da670c4).

  • sum and cumsum 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 using broadcast(f, ...).

  • combinations, permutations, and partitions now return iterators instead of a task, and integer_partitions has been renamed to partitions (#3989, #4055).

  • isreadable/iswritable functions added for more IO types (#3872).

  • Much faster and improved readdlm and writedlm (#3350, #3468, #3483).

  • Faster matchall (#3719), and a number of string and regex improvements.

  • Documentation for writing packages (#2714, #2769, #2791) and linear algebra (#2807)

  • Support optional RTLD flags in dlopen (#2380)

  • Options in pmap for retrying or ignoring failed tasks. Also pmap now works with any iterable.

  • New sinpi(x) and cospi(x) functions to compute sine and cosine of pi*x more accurately (#4112).

Deprecated or removed

  • Methods of min and max that do reductions were renamed to minimum and maximum. min(x) is now minimum(x), and min(x,(),dim) is now minimum(x,dim). (#4235)

  • ComplexPair was renamed to Complex and made immutable, and Complex128 and so on are now aliases to the new Complex type.

  • ! was added to the name of many mutating functions, e.g., push was renamed push! (#907).

  • ref renamed to getindex, and assign to setindex! (#1484).

  • writeable renamed to writable (#3874).

  • logb and ilogb renamed to exponent (#2516).

  • quote_string renamed to repr.

  • safe_char, check_ascii, and check_utf8 replaced by is_valid_char, is_valid_ascii, and is_valid_utf8, respectively.

  • each_line, each_match, begins_with, ends_with, parse_float, parse_int, and seek_end replaced by: eachline, eachmatch, and so on (_ was removed) (#1539).

  • parse_bin(s) replaced by parseint(s,2); parse_oct(s) replaced by parseint(s,8); parse_hex(s) replaced by parseint(s,16).

  • findn_nzs replaced by findnz (#1539).

  • DivideByZeroError replaced by DivideError.

  • addprocs_ssh, addprocs_ssh_tunnel, and addprocs_local replaced by addprocs (with keyword options).

  • remote_call, remote_call_fetch, and remote_call_wait replaced by remotecall, remotecall_fetch, and remotecall_wait.

  • has replaced by contains for sets and by haskey for dictionaries.

  • diagmm and diagmm! replaced by scale and scale! (#2916).

  • unsafe_ref and unsafe_assign replaced by unsafe_load and unsafe_store!.

  • add_each! and del_each! replaced by union! and setdiff!

  • isdenormal renamed to issubnormal (#3105).

  • expr replaced by direct call to Expr constructor.

  • |, &, $, -, and ~ for sets replaced by union, intersect, symdiff, setdiff, and complement (#3272).

  • square function removed.

  • pascal function removed.

  • add and add! for Set replaced by push!.

  • Deprecated ls function in favor of readdir or ; ls in the REPL.

  • start_timer now expects arguments in units of seconds, not milliseconds.

  • Shell redirection operators |, >, and < were eliminated in favor of a new operator |> (#3523).

  • amap is deprecated in favor of new mapslices functionality.

  • The Reverse iterator was removed since it did not work in many cases.

Miscellaneous changes

  • julia-release-* executables renamed to julia-*, and libjulia-release renamed to libjulia (#4177).

Bugfixes and performance updates

Too numerous to mention.