Julia v0.2.0 Release Notes ========================== New language features --------------------- * Keyword & optional function arguments (#485, #1817). * Immutable types (#13). * Triple-quoted string literals (#70). * 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) 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). * `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 `Task`s * `versioninfo` provides detailed version information Library improvements -------------------- * 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 and #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. Deprecated or removed --------------------- * `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. Bugfixes and performance updates -------------------------------- Too numerous to mention.