The Compat package is designed to ease interoperability between
older and newer versions of the Julia
language. In particular, in cases where it is
impossible to write code that works with both the latest Julia
master
branch and older Julia versions, or impossible to write code
that doesn't generate a deprecation warning in some Julia version, the
Compat package provides a macro that lets you use the latest syntax
in a backwards-compatible way.
This is primarily intended for use by other Julia packages, where it is important to maintain cross-version compatibility.
To use Compat in your Julia package, add a line Compat
to the
REQUIRE
file in your package directory. Then, in your package,
after a using Compat
statement to load Compat, simply use:
@compat ...Julia master syntax...
wherever you want to use syntax that differs in the latest Julia
master
(the development version of Julia).
Currently, the @compat
macro supports the following syntaxes:
-
@compat Dict(foo => bar, baz => qux)
- type-inferredDict
construction. -
@compat Dict{Foo,Bar}(foo => bar, baz => qux)
- type-declaredDict
construction. -
@compat split(str, splitter; keywords...)
- the Julia 0.4-style keyword-basedsplit
function -
@compat rsplit(str, splitter; keywords...)
- the Julia 0.4-style keyword-basedrsplit
function
-
typealias AbstractString String
-String
has been renamed toAbstractString
#8872 -
For all unsigned integer types to their equivalents with uppercase
I
. #8907
-
itrunc
,iround
,iceil
,ifloor
are now accessed viatrunc(T, x)
, etc. #9133 -
Base.Random.randmtzig_exprnd
is nowrandexp
#9144 -
sizehint
is nowsizehint!
#9278
@inline
and@noinline
have been added. On 0.3, these are "no-ops," meaning they don't actually do anything.
Dict(ks, vs)
is nowDict(zip(ks, vs))
#8521
If you're adding additional compatibility code to this package, the following shell script is a useful for extracting the version number from a git commit SHA:
#! /bin/bash
last_tag=$(git describe --tags --abbrev=0)
git rev-list $1 ^$last_tag | wc -l | sed -e 's/[^[:digit:]]//g'