summary refs log tree commit diff
path: root/pkgs/development/compilers
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2015-11-20 14:32:58 +0100
committerVladimír Čunát <vcunat@gmail.com>2015-11-20 14:32:58 +0100
commit333d69a5f0e7ccfe7b8c0bdb14ebd3934b3f77fb (patch)
tree0f4757ddd2bb3d73b438eea85828d8e01c049583 /pkgs/development/compilers
parentbdbbfa0d4247e203ffe3171621b614374da05f70 (diff)
parentb809f886c0bdbd4665fc65a4c308d38a30c368d8 (diff)
downloadnixlib-333d69a5f0e7ccfe7b8c0bdb14ebd3934b3f77fb.tar
nixlib-333d69a5f0e7ccfe7b8c0bdb14ebd3934b3f77fb.tar.gz
nixlib-333d69a5f0e7ccfe7b8c0bdb14ebd3934b3f77fb.tar.bz2
nixlib-333d69a5f0e7ccfe7b8c0bdb14ebd3934b3f77fb.tar.lz
nixlib-333d69a5f0e7ccfe7b8c0bdb14ebd3934b3f77fb.tar.xz
nixlib-333d69a5f0e7ccfe7b8c0bdb14ebd3934b3f77fb.tar.zst
nixlib-333d69a5f0e7ccfe7b8c0bdb14ebd3934b3f77fb.zip
Merge staging into closure-size
The most complex problems were from dealing with switches reverted in
the meantime (gcc5, gmp6, ncurses6).
It's likely that darwin is (still) broken nontrivially.
Diffstat (limited to 'pkgs/development/compilers')
-rw-r--r--pkgs/development/compilers/cmucl/binary.nix4
-rw-r--r--pkgs/development/compilers/emscripten-fastcomp/default.nix6
-rw-r--r--pkgs/development/compilers/emscripten/default.nix37
-rw-r--r--pkgs/development/compilers/fsharp/default.nix6
-rw-r--r--pkgs/development/compilers/gcc/5/default.nix1
-rw-r--r--pkgs/development/compilers/gcc/gfortran-darwin.nix27
-rw-r--r--pkgs/development/compilers/gcc/gfortran-darwin.patch26
-rw-r--r--pkgs/development/compilers/ghcjs/default.nix28
-rw-r--r--pkgs/development/compilers/ghcjs/ghcjs-boot.nix7
-rw-r--r--pkgs/development/compilers/ghcjs/shims.nix7
-rw-r--r--pkgs/development/compilers/go/1.4.nix10
-rw-r--r--pkgs/development/compilers/go/1.5.nix21
-rw-r--r--pkgs/development/compilers/go/strip.patch12
-rw-r--r--pkgs/development/compilers/julia/0.2.nix143
-rw-r--r--pkgs/development/compilers/julia/0.3.nix154
-rw-r--r--pkgs/development/compilers/julia/0001-use-system-utf8proc.patch29
-rw-r--r--pkgs/development/compilers/julia/0002-use-system-suitesparse.patch25
-rw-r--r--pkgs/development/compilers/julia/0003-no-ldconfig.patch29
-rw-r--r--pkgs/development/compilers/julia/default.nix157
-rw-r--r--pkgs/development/compilers/llvm/3.3/llvm.nix14
-rw-r--r--pkgs/development/compilers/llvm/3.4/llvm.nix3
-rw-r--r--pkgs/development/compilers/llvm/3.5/llvm.nix3
-rw-r--r--pkgs/development/compilers/llvm/3.6/llvm.nix3
-rw-r--r--pkgs/development/compilers/llvm/3.7/libc++/default.nix9
-rw-r--r--pkgs/development/compilers/llvm/3.7/libc++abi.nix2
-rw-r--r--pkgs/development/compilers/llvm/3.7/llvm.nix9
-rw-r--r--pkgs/development/compilers/mkcl/default.nix7
-rw-r--r--pkgs/development/compilers/mono/default.nix4
-rw-r--r--pkgs/development/compilers/mozart/binary.nix21
-rw-r--r--pkgs/development/compilers/mozart/builder.sh20
-rw-r--r--pkgs/development/compilers/ocaml/4.02.nix (renamed from pkgs/development/compilers/ocaml/4.02.1.nix)4
-rw-r--r--pkgs/development/compilers/openjdk/004_add-fontconfig.patch14
-rw-r--r--pkgs/development/compilers/openjdk/005_enable-infinality.patch261
-rw-r--r--pkgs/development/compilers/openjdk/7.nix19
-rw-r--r--pkgs/development/compilers/openjdk/8.nix26
-rw-r--r--pkgs/development/compilers/oraclejdk/jdk-linux-base.nix2
-rw-r--r--pkgs/development/compilers/oraclejdk/jdk8-linux.nix6
-rw-r--r--pkgs/development/compilers/oraclejdk/jdk8psu-linux.nix10
-rw-r--r--pkgs/development/compilers/ponyc/default.nix47
-rw-r--r--pkgs/development/compilers/rustc/default.nix19
-rw-r--r--pkgs/development/compilers/rustc/generic.nix17
-rw-r--r--pkgs/development/compilers/rustc/head.nix7
-rw-r--r--pkgs/development/compilers/rustc/patches/cc-ar-opts.patch57
-rw-r--r--pkgs/development/compilers/sbcl/1.2.0.nix2
-rw-r--r--pkgs/development/compilers/sbcl/1.2.5.nix2
-rw-r--r--pkgs/development/compilers/sbcl/bootstrap.nix3
-rw-r--r--pkgs/development/compilers/sbcl/default.nix6
-rw-r--r--pkgs/development/compilers/smlnj/default.nix45
-rw-r--r--pkgs/development/compilers/uhc/default.nix10
-rw-r--r--pkgs/development/compilers/urweb/default.nix4
50 files changed, 859 insertions, 526 deletions
diff --git a/pkgs/development/compilers/cmucl/binary.nix b/pkgs/development/compilers/cmucl/binary.nix
index 027857ccda0b..1276b1500a13 100644
--- a/pkgs/development/compilers/cmucl/binary.nix
+++ b/pkgs/development/compilers/cmucl/binary.nix
@@ -2,7 +2,7 @@
 
 let
   inherit (stdenv) system;
-  version = "20b";
+  version = "21a";
   downloadUrl = arch:
     "http://common-lisp.net/project/cmucl/downloads/release/" +
     "${version}/cmucl-${version}-${arch}.tar.bz2";
@@ -13,7 +13,7 @@ let
   dist =
     if system == "i686-linux" then fetchDist {
         arch = "x86-linux";
-        sha256 = "1s00r1kszk5zhmv7m8z5q2wcqjn2gn7fbqwji3hgnsdvbb1f3jdn";
+        sha256 = "0w8dcaiasfd4fbj340zaf6wcjfgc4wzkvr24gbxa5rr3aw10rl02";
       }
     else throw "Unsupported platform for cmucl.";
 in
diff --git a/pkgs/development/compilers/emscripten-fastcomp/default.nix b/pkgs/development/compilers/emscripten-fastcomp/default.nix
index bcbe28f23351..bb820f9820d3 100644
--- a/pkgs/development/compilers/emscripten-fastcomp/default.nix
+++ b/pkgs/development/compilers/emscripten-fastcomp/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchgit, python }:
 
 let
-  tag = "1.29.10";
+  tag = "1.35.4";
 in
 
 stdenv.mkDerivation rec {
@@ -10,13 +10,13 @@ stdenv.mkDerivation rec {
   srcFC = fetchgit {
     url = git://github.com/kripken/emscripten-fastcomp;
     rev = "refs/tags/${tag}";
-    sha256 = "eee0f884c7e10e1b869b9d3afbb03bf69c63ec0560b136e3e8cd64ca00a41653";
+    sha256 = "3bd50787d78381f684f9b3f46fc91cc3d1803c3389e19ec41ee59c2deaf727d8";
   };
 
   srcFL = fetchgit {
     url = git://github.com/kripken/emscripten-fastcomp-clang;
     rev = "refs/tags/${tag}";
-    sha256 = "22c48e85dfacd9f2349d37fb421f0f848b65fc7b39e66984d04349ee3271667c";
+    sha256 = "ec0d22c04eec5f84695401e19a52704b28e8d2779b87388f399b5f63b54a9862";
   };
 
   buildInputs = [ python ];
diff --git a/pkgs/development/compilers/emscripten/default.nix b/pkgs/development/compilers/emscripten/default.nix
index b49884fad1c7..daa2ea3113c3 100644
--- a/pkgs/development/compilers/emscripten/default.nix
+++ b/pkgs/development/compilers/emscripten/default.nix
@@ -1,7 +1,8 @@
 { stdenv, fetchgit, emscriptenfastcomp, python, nodejs, closurecompiler, jre }:
 
 let
-  tag = "1.29.10";
+  tag = "1.35.4";
+  appdir = "share/emscripten";
 in
 
 stdenv.mkDerivation rec {
@@ -10,26 +11,28 @@ stdenv.mkDerivation rec {
   src = fetchgit {
     url = git://github.com/kripken/emscripten;
     rev = "refs/tags/${tag}";
-    sha256 = "0d7ed2b801ac37acaf907bd03ba42cce3ac4a4c330bf1ef28de25bbb3f39ba87";
+    sha256 = "466500356c8c0fbcee495b2dbd2ccf0bf9d7eaf303d274ebaf491122759dd233";
   };
 
   buildCommand = ''
-    mkdir $out
-    cp -a $src $out/bin
-    chmod -R +w $out/bin
-    grep -rl '^#!/usr.*python' $out/bin | xargs sed -i -s 's@^#!/usr.*python.*@#!${python}/bin/python@'
-    sed -i -e "s,EM_CONFIG = '~/.emscripten',EM_CONFIG = '$out/config'," $out/bin/tools/shared.py
-    sed -i -e 's,^.*did not see a source tree above the LLVM.*$,      return True,' $out/bin/tools/shared.py
-    sed -i -e 's,def check_sanity(force=False):,def check_sanity(force=False):\n  return,' $out/bin/tools/shared.py
+    mkdir -p $out/${appdir}
+    cp -r $src/* $out/${appdir}
+    chmod -R +w $out/${appdir}
+    grep -rl '^#!/usr.*python' $out/${appdir} | xargs sed -i -s 's@^#!/usr.*python.*@#!${python}/bin/python@'
+    sed -i -e "s,EM_CONFIG = '~/.emscripten',EM_CONFIG = '$out/${appdir}/config'," $out/${appdir}/tools/shared.py
+    sed -i -e 's,^.*did not see a source tree above the LLVM.*$,      return True,' $out/${appdir}/tools/shared.py
+    sed -i -e 's,def check_sanity(force=False):,def check_sanity(force=False):\n  return,' $out/${appdir}/tools/shared.py
+    mkdir $out/bin
+    ln -s $out/${appdir}/{em++,em-config,emar,embuilder.py,emcc,emcmake,emconfigure,emlink.py,emmake,emranlib,emrun,emscons} $out/bin
 
-    echo "EMSCRIPTEN_ROOT = '$out/bin'" > $out/config
-    echo "LLVM_ROOT = '${emscriptenfastcomp}'" >> $out/config
-    echo "PYTHON = '${python}/bin/python'" >> $out/config
-    echo "NODE_JS = '${nodejs}/bin/node'" >> $out/config
-    echo "JS_ENGINES = [NODE_JS]" >> $out/config
-    echo "COMPILER_ENGINE = NODE_JS" >> $out/config
-    echo "CLOSURE_COMPILER = '${closurecompiler}/bin/closure-compiler'" >> $out/config
-    echo "JAVA = '${jre}/bin/java'" >> $out/config
+    echo "EMSCRIPTEN_ROOT = '$out/${appdir}'" > $out/${appdir}/config
+    echo "LLVM_ROOT = '${emscriptenfastcomp}'" >> $out/${appdir}/config
+    echo "PYTHON = '${python}/bin/python'" >> $out/${appdir}/config
+    echo "NODE_JS = '${nodejs}/bin/node'" >> $out/${appdir}/config
+    echo "JS_ENGINES = [NODE_JS]" >> $out/${appdir}/config
+    echo "COMPILER_ENGINE = NODE_JS" >> $out/${appdir}/config
+    echo "CLOSURE_COMPILER = '${closurecompiler}/share/java/compiler.jar'" >> $out/${appdir}/config
+    echo "JAVA = '${jre}/bin/java'" >> $out/${appdir}/config
   '';
   meta = with stdenv.lib; {
     homepage = https://github.com/kripken/emscripten;
diff --git a/pkgs/development/compilers/fsharp/default.nix b/pkgs/development/compilers/fsharp/default.nix
index 11bae06fc749..12df5721cc4c 100644
--- a/pkgs/development/compilers/fsharp/default.nix
+++ b/pkgs/development/compilers/fsharp/default.nix
@@ -4,15 +4,17 @@
 
 stdenv.mkDerivation rec {
   name = "fsharp-${version}";
-  version = "3.1.2.5";
+  version = "4.0.0.4";
 
   src = fetchurl {
     url = "https://github.com/fsharp/fsharp/archive/${version}.tar.gz";
-    sha256 = "1j6lnzvhj8fj1csb9am9xcrmmph6v3jyangkq8n1yp3dr6yxqzh1";
+    sha256 = "1m9pwr4xjl3ikaf3pzsa4pb3pr533xa0v34y2cy4pjcc6j0f71av";
   };
 
   buildInputs = [ mono pkgconfig dotnetbuildhelpers autoconf automake which ];
+
   configurePhase = ''
+    sed -i '988d' src/FSharpSource.targets
     substituteInPlace ./autogen.sh --replace "/usr/bin/env sh" "/bin/sh"
     ./autogen.sh --prefix $out
   '';
diff --git a/pkgs/development/compilers/gcc/5/default.nix b/pkgs/development/compilers/gcc/5/default.nix
index 2a5b43a871ff..6b54d31cb019 100644
--- a/pkgs/development/compilers/gcc/5/default.nix
+++ b/pkgs/development/compilers/gcc/5/default.nix
@@ -34,6 +34,7 @@
 , stripped ? true
 , gnused ? null
 , binutils ? null
+, cloog # unused; just for compat with gcc4, as we override the parameter on some places
 }:
 
 assert langJava     -> zip != null && unzip != null
diff --git a/pkgs/development/compilers/gcc/gfortran-darwin.nix b/pkgs/development/compilers/gcc/gfortran-darwin.nix
index bd11b1ebc8e2..ee405c6fb655 100644
--- a/pkgs/development/compilers/gcc/gfortran-darwin.nix
+++ b/pkgs/development/compilers/gcc/gfortran-darwin.nix
@@ -1,20 +1,35 @@
-# This is a derivation specific to OS X (Darwin). It may work on other
-# systems as well but has not been tested.
-{gmp, mpfr, libmpc, fetchurl, stdenv}:
+# This is a derivation specific to OS X (Darwin)
+{gmp, mpfr, libmpc, isl_0_14, cloog, zlib, fetchurl, stdenv
+
+, Libsystem
+}:
 
 stdenv.mkDerivation rec {
   name = "gfortran-${version}";
   version = "5.1.0";
-  buildInputs = [gmp mpfr libmpc];
+  buildInputs = [gmp mpfr libmpc isl_0_14 cloog zlib];
   src = fetchurl {
     url = "mirror://gnu/gcc/gcc-${version}/gcc-${version}.tar.bz2";
     sha256 = "1bd5vj4px3s8nlakbgrh38ynxq4s654m6nxz7lrj03mvkkwgvnmp";
   };
+  patches = ./gfortran-darwin.patch;
   configureFlags = ''
-    --enable-languages=fortran --enable-checking=release --disable-bootstrap
+    --disable-bootstrap
+    --disable-cloog-version-check
+    --disable-isl-version-check
+    --disable-multilib
+    --enable-checking=release
+    --enable-languages=fortran
+    --with-cloog=${cloog}
     --with-gmp=${gmp}
-    --with-mpfr=${mpfr}
+    --with-isl=${isl_0_14}
     --with-mpc=${libmpc}
+    --with-mpfr=${mpfr}
+    --with-native-system-header-dir=${Libsystem}/include
+    --with-system-zlib
+  '';
+  postConfigure = ''
+    export DYLD_LIBRARY_PATH=`pwd`/`uname -m`-apple-darwin`uname -r`/libgcc
   '';
   makeFlags = ["CC=clang"];
   passthru.cc = stdenv.cc.cc;
diff --git a/pkgs/development/compilers/gcc/gfortran-darwin.patch b/pkgs/development/compilers/gcc/gfortran-darwin.patch
new file mode 100644
index 000000000000..73c5d35153b0
--- /dev/null
+++ b/pkgs/development/compilers/gcc/gfortran-darwin.patch
@@ -0,0 +1,26 @@
+--- a/gcc/config/darwin-c.c	2015-01-09 22:18:42.000000000 +0200
++++ b/gcc/config/darwin-c.c	2015-06-27 04:17:58.000000000 +0300
+@@ -490,8 +490,7 @@
+ 
+ static const char *framework_defaults [] =
+   {
+-    "/System/Library/Frameworks",
+-    "/Library/Frameworks",
++// stdenvDarwinPure
+   };
+ 
+ /* Register the GNU objective-C runtime include path if STDINC.  */
+ 
+ /* Register the GNU objective-C runtime include path if STDINC.  */
+--- a/gcc/cppdefault.c	2015-01-05 14:33:28.000000000 +0200
++++ b/gcc/cppdefault.c	2015-06-27 04:16:15.000000000 +0300
+@@ -35,6 +35,9 @@
+ # undef CROSS_INCLUDE_DIR
+ #endif
+ 
++// stdenvDarwinPure
++# undef LOCAL_INCLUDE_DIR
++
+ const struct default_include cpp_include_defaults[]
+ #ifdef INCLUDE_DEFAULTS
+ = INCLUDE_DEFAULTS;
diff --git a/pkgs/development/compilers/ghcjs/default.nix b/pkgs/development/compilers/ghcjs/default.nix
index a73af47f9c4e..c15ebeca9fd0 100644
--- a/pkgs/development/compilers/ghcjs/default.nix
+++ b/pkgs/development/compilers/ghcjs/default.nix
@@ -36,31 +36,19 @@
 , haddock, hspec, xhtml, primitive, cacert, pkgs
 , coreutils
 , libiconv
+
+, ghcjsBoot ? import ./ghcjs-boot.nix { inherit fetchgit; }
+, shims ? import ./shims.nix { inherit fetchFromGitHub; }
 }:
-let
-  version = "0.1.0";
-  ghcjsBoot = fetchgit {
-    url = "git://github.com/ghcjs/ghcjs-boot.git";
-    rev = "ec9f795b42b40fd24933d1672db153df5a29cc00"; # master branch
-    sha256 = "0bkvqlsgb9n0faayi4k1dlkn9cbm99a66m9nnx1kykb44qcl40yg";
-    fetchSubmodules = true;
-  };
-  shims = fetchFromGitHub {
-    owner = "ghcjs";
-    repo = "shims";
-    rev = "01e01dee31a4786b3d01092e72350b0859a9f8c9"; # master branch
-    sha256 = "01m1yhq6l71azx0zqbpzmqc6rxxf654hgjibc0lz2cg5942wh1hf";
-  };
-in mkDerivation (rec {
+let version = "0.1.0"; in
+mkDerivation (rec {
   pname = "ghcjs";
   inherit version;
-  # `src` is ghcjs's a3157072c2593debf2e45e751e9a8aa90b860b4d plus this
-  # additional dependency bump: https://github.com/ghcjs/ghcjs/pull/408
   src = fetchFromGitHub {
-    owner = "k0001";
+    owner = "ghcjs";
     repo = "ghcjs";
-    rev = "1b767e0b3dabdd1561bd17314d472651bfd9b97c";
-    sha256 = "0j4vj47qljbcbrp3md3jwxwl2kz9k85visq6yi1x8wdch4wb2kgy";
+    rev = "2ae1276a97c9f32c4b02080d1bb363cf0c2c553c";
+    sha256 = "18m1737w4bfn84cnwcf021gsy69c84dlkwxnyf4r5h97gly6jx7q";
   };
   isLibrary = true;
   isExecutable = true;
diff --git a/pkgs/development/compilers/ghcjs/ghcjs-boot.nix b/pkgs/development/compilers/ghcjs/ghcjs-boot.nix
new file mode 100644
index 000000000000..9e5584a6ade7
--- /dev/null
+++ b/pkgs/development/compilers/ghcjs/ghcjs-boot.nix
@@ -0,0 +1,7 @@
+{ fetchgit }:
+fetchgit {
+  url = git://github.com/ghcjs/ghcjs-boot.git;
+  rev = "39cd58e12f02fa99f493387ba4c3708819a72294";
+  sha256 = "0s7hvg60piklrg9ypa7r44l4qzvpinrgsaffak6fr7gd3k08wn9d";
+  fetchSubmodules = true;
+}
diff --git a/pkgs/development/compilers/ghcjs/shims.nix b/pkgs/development/compilers/ghcjs/shims.nix
new file mode 100644
index 000000000000..512d1c8e9b35
--- /dev/null
+++ b/pkgs/development/compilers/ghcjs/shims.nix
@@ -0,0 +1,7 @@
+{ fetchFromGitHub }:
+fetchFromGitHub {
+  owner = "ghcjs";
+  repo = "shims";
+  rev = "f17d10cf47450fe4e00433e988db0bddddb35cc0";
+  sha256 = "1kgnkkz1khzkmb0dm0ssp8l17iy9d9n9phszcj6vg9vi7v9y7l05";
+}
diff --git a/pkgs/development/compilers/go/1.4.nix b/pkgs/development/compilers/go/1.4.nix
index ad995042864b..5a3b60e3ee6f 100644
--- a/pkgs/development/compilers/go/1.4.nix
+++ b/pkgs/development/compilers/go/1.4.nix
@@ -63,15 +63,23 @@ stdenv.mkDerivation rec {
   '' + lib.optionalString stdenv.isDarwin ''
     sed -i 's,"/etc","'"$TMPDIR"'",' src/os/os_test.go
     sed -i 's,/_go_os_test,'"$TMPDIR"'/_go_os_test,' src/os/path_test.go
+    sed -i '/TestCgoLookupIP/areturn' src/net/cgo_unix_test.go
+    sed -i '/TestChdirAndGetwd/areturn' src/os/os_test.go
+    sed -i '/TestDialDualStackLocalhost/areturn' src/net/dial_test.go
     sed -i '/TestRead0/areturn' src/os/os_test.go
     sed -i '/TestSystemRoots/areturn' src/crypto/x509/root_darwin_test.go
-    sed -i '/TestDialDualStackLocalhost/areturn' src/net/dial_test.go
+
+    # fails when running inside tmux
+    sed -i '/TestNohup/areturn' src/os/signal/signal_test.go
+
 
     # remove IP resolving tests, on darwin they can find fe80::1%lo while expecting ::1
     sed -i '/TestResolveIPAddr/areturn' src/net/ipraw_test.go
     sed -i '/TestResolveTCPAddr/areturn' src/net/tcp_test.go
     sed -i '/TestResolveUDPAddr/areturn' src/net/udp_test.go
 
+    sed -i '/TestCgoExternalThreadSIGPROF/areturn' src/runtime/crash_cgo_test.go
+
     touch $TMPDIR/group $TMPDIR/hosts $TMPDIR/passwd
   '';
 
diff --git a/pkgs/development/compilers/go/1.5.nix b/pkgs/development/compilers/go/1.5.nix
index 3858d2566f44..ce5c2579b89f 100644
--- a/pkgs/development/compilers/go/1.5.nix
+++ b/pkgs/development/compilers/go/1.5.nix
@@ -1,7 +1,7 @@
 { stdenv, lib, fetchurl, tzdata, iana_etc, go_1_4, runCommand
 , perl, which, pkgconfig, patch
 , pcre
-, Security }:
+, Security, Foundation }:
 
 let
   goBootstrap = runCommand "go-bootstrap" {} ''
@@ -25,7 +25,9 @@ stdenv.mkDerivation rec {
   # perl is used for testing go vet
   nativeBuildInputs = [ perl which pkgconfig patch ];
   buildInputs = [ pcre ];
-  propagatedBuildInputs = lib.optional stdenv.isDarwin Security;
+  propagatedBuildInputs = lib.optionals stdenv.isDarwin [
+    Security Foundation
+  ];
 
   # I'm not sure what go wants from its 'src', but the go installation manual
   # describes an installation keeping the src.
@@ -67,18 +69,31 @@ stdenv.mkDerivation rec {
   '' + lib.optionalString stdenv.isLinux ''
     sed -i 's,/usr/share/zoneinfo/,${tzdata}/share/zoneinfo/,' src/time/zoneinfo_unix.go
   '' + lib.optionalString stdenv.isDarwin ''
+    substituteInPlace src/race.bash --replace \
+      "sysctl machdep.cpu.extfeatures | grep -qv EM64T" true
+    sed -i 's,strings.Contains(.*sysctl.*,true {,' src/cmd/dist/util.go
     sed -i 's,"/etc","'"$TMPDIR"'",' src/os/os_test.go
     sed -i 's,/_go_os_test,'"$TMPDIR"'/_go_os_test,' src/os/path_test.go
+    sed -i '/TestCgoLookupIP/areturn' src/net/cgo_unix_test.go
+    sed -i '/TestChdirAndGetwd/areturn' src/os/os_test.go
     sed -i '/TestRead0/areturn' src/os/os_test.go
     sed -i '/TestSystemRoots/areturn' src/crypto/x509/root_darwin_test.go
 
+    sed -i '/TestGoInstallRebuildsStalePackagesInOtherGOPATH/areturn' src/cmd/go/go_test.go
+    sed -i '/TestBuildDashIInstallsDependencies/areturn' src/cmd/go/go_test.go
+
+    sed -i '/TestDisasmExtld/areturn' src/cmd/objdump/objdump_test.go
+
     touch $TMPDIR/group $TMPDIR/hosts $TMPDIR/passwd
   '';
 
   patches = [
     ./cacert-1.5.patch
     ./remove-tools-1.5.patch
-  ];
+  ]
+  # -ldflags=-s is required to compile on Darwin, see
+  # https://github.com/golang/go/issues/11994
+  ++ stdenv.lib.optional stdenv.isDarwin ./strip.patch;
 
   GOOS = if stdenv.isDarwin then "darwin" else "linux";
   GOARCH = if stdenv.isDarwin then "amd64"
diff --git a/pkgs/development/compilers/go/strip.patch b/pkgs/development/compilers/go/strip.patch
new file mode 100644
index 000000000000..7b036802d51c
--- /dev/null
+++ b/pkgs/development/compilers/go/strip.patch
@@ -0,0 +1,12 @@
+diff --git a/src/cmd/go/build.go b/src/cmd/go/build.go
+index 0b14725..a7608ce 100644
+--- a/src/cmd/go/build.go
++++ b/src/cmd/go/build.go
+@@ -2310,6 +2310,7 @@ func (gcToolchain) ld(b *builder, root *action, out string, allactions []*action
+ 		}
+ 	}
+ 	var ldflags []string
++	ldflags = append(ldflags, "-s")
+ 	if buildContext.InstallSuffix != "" {
+ 		ldflags = append(ldflags, "-installsuffix", buildContext.InstallSuffix)
+ 	}
diff --git a/pkgs/development/compilers/julia/0.2.nix b/pkgs/development/compilers/julia/0.2.nix
deleted file mode 100644
index 9d585e07fe1a..000000000000
--- a/pkgs/development/compilers/julia/0.2.nix
+++ /dev/null
@@ -1,143 +0,0 @@
-{ stdenv, fetchgit, gfortran, perl, m4, llvm, gmp, pcre, zlib
- , readline, fftwSinglePrec, fftw, libunwind, suitesparse, glpk, fetchurl
- , ncurses, libunistring, lighttpd, patchelf, openblas
- , tcl, tk, xproto, libX11, git, mpfr
- } :
-let
-  realGcc = stdenv.cc.cc;
-in
-stdenv.mkDerivation rec {
-  pname = "julia";
-  version = "0.2.1";
-  name = "${pname}-${version}";
-
-  grisu_ver = "1.1.1";
-  dsfmt_ver = "2.2";
-  openblas_ver = "v0.2.2";
-  lapack_ver = "3.4.1";
-  arpack_ver = "3.1.3";
-  clp_ver = "1.14.5";
-  lighttpd_ver = "1.4.29";
-  patchelf_ver = "0.6";
-  pcre_ver = "8.31";
-
-  grisu_src = fetchurl {
-    url = "http://double-conversion.googlecode.com/files/double-conversion-${grisu_ver}.tar.gz";
-    sha256 = "e1cabb73fd69e74f145aea91100cde483aef8b79dc730fcda0a34466730d4d1d";
-  };
-  dsfmt_src = fetchurl {
-    url = "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/dSFMT-src-${dsfmt_ver}.tar.gz";
-    name = "dsfmt-${dsfmt_ver}.tar.gz";
-    sha256 = "bc3947a9b2253a869fcbab8ff395416cb12958be9dba10793db2cd7e37b26899";
-  };
-  openblas_src = fetchurl {
-    url = "https://github.com/xianyi/OpenBLAS/tarball/${openblas_ver}";
-    name = "openblas-${openblas_ver}.tar.gz";
-    sha256 = "19ffec70f9678f5c159feadc036ca47720681b782910fbaa95aa3867e7e86d8e";
-  };
-  arpack_src = fetchurl {
-    url = "http://forge.scilab.org/index.php/p/arpack-ng/downloads/607/get/";
-    name = "arpack-ng-${arpack_ver}.tar.gz";
-    sha256 = "039w7j3dr1xy35a3hp92zg2g92gmjq6xsv0g4awlb4cffy09nr2d";
-  };
-  lapack_src = fetchurl {
-    url = "http://www.netlib.org/lapack/lapack-${lapack_ver}.tgz";
-    name = "lapack-${lapack_ver}.tgz";
-    sha256 = "93b910f94f6091a2e71b59809c4db4a14655db527cfc5821ade2e8c8ab75380f";
-  };
-  clp_src = fetchurl {
-    url = "http://www.coin-or.org/download/source/Clp/Clp-${clp_ver}.tgz";
-    name = "clp-${clp_ver}.tar.gz";
-    sha256 = "e6cabe8b4319c17a9bbe6fe172194ab6cd1fe6e376f5e9969d3040636ea3a817";
-  };
-  lighttpd_src = fetchurl {
-    url = "http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-${lighttpd_ver}.tar.gz";
-    sha256 = "ff9f4de3901d03bb285634c5b149191223d17f1c269a16c863bac44238119c85";
-  };
-  patchelf_src = fetchurl {
-    url = "http://hydra.nixos.org/build/1524660/download/2/patchelf-${patchelf_ver}.tar.bz2";
-    sha256 = "00bw29vdsscsili65wcb5ay0gvg1w0ljd00sb5xc6br8bylpyzpw";
-  };
-  pcre_src = fetchurl {
-    url = "ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-${pcre_ver}.tar.bz2";
-    sha256 = "0g4c0z4h30v8g8qg02zcbv7n67j5kz0ri9cfhgkpwg276ljs0y2p";
-  };
-
-  src = fetchgit {
-    url = "git://github.com/JuliaLang/julia.git";
-    rev = "refs/tags/v${version}";
-    sha256 = "7ee0f267bc1ae286764ced3c0c695c335a6f8d67bd7b3ca7e4de259333c9426a";
-  };
-
-  buildInputs = [ gfortran perl m4 gmp pcre llvm readline zlib
-    fftw fftwSinglePrec libunwind suitesparse glpk ncurses libunistring patchelf
-    openblas tcl tk xproto libX11 git mpfr
-    ];
-
-  configurePhase = ''
-    for i in GMP LLVM PCRE LAPACK OPENBLAS BLAS READLINE FFTW LIBUNWIND SUITESPARSE GLPK LIGHTTPD ZLIB MPFR;
-    do
-      makeFlags="$makeFlags USE_SYSTEM_$i=1 "
-    done
-	makeFlags="$makeFlags JULIA_CPU_TARGET=core2";
-
-    copy_kill_hash(){
-      cp "$1" "$2/$(basename "$1" | sed -e 's/^[a-z0-9]*-//')"
-    }
-
-    for i in "${grisu_src}" "${dsfmt_src}" "${arpack_src}" "${clp_src}" "${patchelf_src}" "${pcre_src}" ; do
-      copy_kill_hash "$i" deps
-    done
-    copy_kill_hash "${dsfmt_src}" deps/random
-
-    ${if realGcc ==null then "" else 
-    ''export NIX_LDFLAGS="$NIX_LDFLAGS -L${realGcc}/lib -L${realGcc}/lib64 -lpcre -lopenblas -lm -lfftw3f -lfftw3 -lglpk -lunistring -lz -lgmp -lmpfr"''}
-    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -fPIC "
-
-    export LDFLAGS="-L${suitesparse}/lib -L$out/lib/julia -Wl,-rpath,$out/lib/julia"
-
-    export GLPK_PREFIX="${glpk}/include"
-
-    sed -e "s@/usr/local/lib@$out/lib@g" -i deps/Makefile
-    sed -e "s@/usr/lib@$out/lib@g" -i deps/Makefile
-
-    export makeFlags="$makeFlags PREFIX=$out SHELL=${stdenv.shell}"
-
-    export dontPatchELF=1
-
-    export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$PWD/usr/lib:$PWD/usr/lib/julia"
-  '';
-
-  preBuild = ''
-    mkdir -p usr/lib
-
-    mkdir -p "$out/lib"
-    ln -s "${openblas}/lib/libopenblas.so" "$out/lib/libblas.so"
-    ln -s "${openblas}/lib/libopenblas.so" "$out/lib/liblapack.so"
-
-    echo "$out"
-    (
-    cd "$(mktemp -d)"
-    for i in "${suitesparse}"/lib/lib*.a; do
-      ar -x $i
-    done
-    gcc *.o --shared -o "$out/lib/libsuitesparse.so"
-    )
-    cp "$out/lib/libsuitesparse.so" usr/lib
-    for i in umfpack cholmod amd camd colamd spqr; do
-      ln -s libsuitesparse.so "$out"/lib/lib$i.so;
-      ln -s libsuitesparse.so "usr"/lib/lib$i.so;
-    done
-  '';
-
-  preInstall = ''
-  '';
-
-  meta = {
-    description = "High-level performance-oriented dynamical language for technical computing";
-    homepage = "http://julialang.org/";
-    license = stdenv.lib.licenses.mit;
-    maintainers = [ stdenv.lib.maintainers.raskin ];
-    platforms = with stdenv.lib.platforms; linux;
-  };
-}
diff --git a/pkgs/development/compilers/julia/0.3.nix b/pkgs/development/compilers/julia/0.3.nix
deleted file mode 100644
index 710ddec9c105..000000000000
--- a/pkgs/development/compilers/julia/0.3.nix
+++ /dev/null
@@ -1,154 +0,0 @@
-{ stdenv, fetchgit, fetchurl
-# build tools
-, gfortran, git, m4, patchelf, perl, which, python2
-# libjulia dependencies
-, libunwind, llvm, readline, utf8proc, zlib
-# standard library dependencies
-, double_conversion, fftwSinglePrec, fftw, glpk, gmp, mpfr, pcre
-# linear algebra
-, openblas, arpack, suitesparse
-}:
-
-with stdenv.lib;
-
-# All dependencies should use the same OpenBLAS.
-let
-  arpack_ = arpack;
-  suitesparse_ = suitesparse;
-in
-let
-  arpack = arpack_.override { inherit openblas; };
-  suitesparse = suitesparse_.override { inherit openblas; };
-in
-
-stdenv.mkDerivation rec {
-  pname = "julia";
-  version = "0.3.11";
-  name = "${pname}-${version}";
-
-  src = fetchgit {
-    url = "git://github.com/JuliaLang/julia.git";
-    rev = "refs/tags/v${version}";
-    sha256 = "06xmv2l8hskdh1s5y2dh28vpb5pc0gzmfl5a03yp0qjjsl5cb284";
-    name = "julia-git-v${version}";
-  };
-
-  patches = [ ./0001-work-around-buggy-wcwidth.patch ];
-
-  extraSrcs =
-    let
-      dsfmt_ver = "2.2";
-
-      dsfmt_src = fetchurl {
-        url = "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/dSFMT-src-${dsfmt_ver}.tar.gz";
-        name = "dsfmt-${dsfmt_ver}.tar.gz";
-        md5 = "cb61be3be7254eae39684612c524740d";
-      };
-
-    in [ dsfmt_src ];
-
-  prePatch = ''
-    copy_kill_hash(){
-      cp "$1" "$2/$(basename "$1" | sed -e 's/^[a-z0-9]*-//')"
-    }
-
-    for i in $extraSrcs; do
-      copy_kill_hash "$i" deps
-    done
-  '';
-
-  postPatch = ''
-    sed -i deps/Makefile \
-        -e "s@/usr/local/lib@$out/lib@g" \
-        -e "s@/usr/lib@$out/lib@g" \
-        -e "s@/usr/include/double-conversion@${double_conversion}/include/double-conversion@g"
-
-    patchShebangs . contrib
-
-    # ldconfig doesn't seem to ever work on NixOS; system-wide ldconfig cache
-    # is probably not what we want anyway on non-NixOS
-    sed -e "s@/sbin/ldconfig@true@" -i src/ccall.*
-  '';
-
-  buildInputs = [
-    arpack double_conversion fftw fftwSinglePrec glpk gmp libunwind
-    llvm mpfr pcre openblas readline suitesparse utf8proc zlib
-  ];
-
-  nativeBuildInputs = [ gfortran git m4 patchelf perl python2 which ];
-
-  makeFlags =
-    let
-      arch = head (splitString "-" stdenv.system);
-      march = { "x86_64" = "x86-64"; "i686" = "i686"; }."${arch}"
-              or (throw "unsupported architecture: ${arch}");
-    in [
-      "ARCH=${arch}"
-      "MARCH=${march}"
-      "JULIA_CPU_TARGET=${march}"
-      "PREFIX=$(out)"
-      "prefix=$(out)"
-      "SHELL=${stdenv.shell}"
-
-      "USE_SYSTEM_BLAS=1"
-      "LIBBLAS=-lopenblas"
-      "LIBBLASNAME=libopenblas"
-
-      "USE_SYSTEM_LAPACK=1"
-      "LIBLAPACK=-lopenblas"
-      "LIBLAPACKNAME=libopenblas"
-
-      "USE_SYSTEM_ARPACK=1"
-      "USE_SYSTEM_FFTW=1"
-      "USE_SYSTEM_GLPK=1"
-      "USE_SYSTEM_GMP=1"
-      "USE_SYSTEM_GRISU=1"
-      "USE_SYSTEM_LIBUNWIND=1"
-      "USE_SYSTEM_LLVM=1"
-      "USE_SYSTEM_MPFR=1"
-      "USE_SYSTEM_PATCHELF=1"
-      "USE_SYSTEM_PCRE=1"
-      "USE_SYSTEM_READLINE=1"
-      "USE_SYSTEM_SUITESPARSE=1"
-      "USE_SYSTEM_UTF8PROC=1"
-      "USE_SYSTEM_ZLIB=1"
-    ];
-
-  GLPK_PREFIX = "${glpk}/include";
-
-  NIX_CFLAGS_COMPILE = [ "-fPIC" ];
-
-  # Julia tries to load these libraries dynamically at runtime, but they can't be found.
-  # Easier by far to link against them as usual.
-  # These go in LDFLAGS, where they affect only Julia itself, and not NIX_LDFLAGS,
-  # where they would also be used for all the private libraries Julia builds.
-  LDFLAGS = [
-    "-larpack"
-    "-lfftw3_threads"
-    "-lfftw3f_threads"
-    "-lglpk"
-    "-lgmp"
-    "-lmpfr"
-    "-lopenblas"
-    "-lpcre"
-    "-lsuitesparse"
-    "-lz"
-  ];
-
-  dontStrip = true;
-  dontPatchELF = true;
-
-  enableParallelBuilding = true;
-
-  # Test fail on i686 (julia version 0.3.10)
-  doCheck = !stdenv.isi686;
-  checkTarget = "testall";
-
-  meta = {
-    description = "High-level performance-oriented dynamical language for technical computing";
-    homepage = "http://julialang.org/";
-    license = stdenv.lib.licenses.mit;
-    maintainers = with stdenv.lib.maintainers; [ raskin ttuegel ];
-    platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ];
-  };
-}
diff --git a/pkgs/development/compilers/julia/0001-use-system-utf8proc.patch b/pkgs/development/compilers/julia/0001-use-system-utf8proc.patch
new file mode 100644
index 000000000000..b93654a88965
--- /dev/null
+++ b/pkgs/development/compilers/julia/0001-use-system-utf8proc.patch
@@ -0,0 +1,29 @@
+From 54a66b5728ec98f44a1768f064509be4fd3f2ef6 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Sat, 10 Oct 2015 13:09:48 -0500
+Subject: [PATCH 1/3] use system utf8proc
+
+---
+ src/flisp/Makefile | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/flisp/Makefile b/src/flisp/Makefile
+index bec8624..5437b5c 100644
+--- a/src/flisp/Makefile
++++ b/src/flisp/Makefile
+@@ -24,9 +24,9 @@ DOBJS = $(SRCS:%.c=$(BUILDDIR)/%.dbg.obj)
+ LLTDIR = ../support
+ LLT_release = $(BUILDDIR)/$(LLTDIR)/libsupport.a
+ LLT_debug = $(BUILDDIR)/$(LLTDIR)/libsupport-debug.a
+-LIBFILES_release = $(LLT_release) $(LIBUV) $(LIBUTF8PROC)
+-LIBFILES_debug = $(LLT_debug) $(LIBUV) $(LIBUTF8PROC)
+-LIBS =
++LIBFILES_release = $(LLT_release) $(LIBUV)
++LIBFILES_debug = $(LLT_debug) $(LIBUV)
++LIBS = $(LIBUTF8PROC)
+ ifneq ($(OS),WINNT)
+ LIBS += -lpthread
+ endif
+-- 
+2.5.2
+
diff --git a/pkgs/development/compilers/julia/0002-use-system-suitesparse.patch b/pkgs/development/compilers/julia/0002-use-system-suitesparse.patch
new file mode 100644
index 000000000000..17f49ad5ca9f
--- /dev/null
+++ b/pkgs/development/compilers/julia/0002-use-system-suitesparse.patch
@@ -0,0 +1,25 @@
+From e2b0ed6664fe4adfd0f9ce8fa14732d47b30ab5c Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Sat, 10 Oct 2015 16:18:53 -0500
+Subject: [PATCH 2/3] use system suitesparse
+
+---
+ base/sparse/cholmod.jl | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/base/sparse/cholmod.jl b/base/sparse/cholmod.jl
+index ec7e980..f834cc1 100644
+--- a/base/sparse/cholmod.jl
++++ b/base/sparse/cholmod.jl
+@@ -151,7 +151,7 @@ function __init__()
+ 
+         # Register gc tracked allocator if CHOLMOD is new enough
+         if current_version >= v"3.0.0"
+-            cnfg = cglobal((:SuiteSparse_config, :libsuitesparseconfig), Ptr{Void})
++            cnfg = cglobal((:SuiteSparse_config, :libsuitesparse), Ptr{Void})
+             unsafe_store!(cnfg, cglobal(:jl_malloc, Ptr{Void}), 1)
+             unsafe_store!(cnfg, cglobal(:jl_calloc, Ptr{Void}), 2)
+             unsafe_store!(cnfg, cglobal(:jl_realloc, Ptr{Void}), 3)
+-- 
+2.5.2
+
diff --git a/pkgs/development/compilers/julia/0003-no-ldconfig.patch b/pkgs/development/compilers/julia/0003-no-ldconfig.patch
new file mode 100644
index 000000000000..d490b7049278
--- /dev/null
+++ b/pkgs/development/compilers/julia/0003-no-ldconfig.patch
@@ -0,0 +1,29 @@
+From 8802fe583eda93a928739cb3bc3517e19d1a6fa1 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Sun, 11 Oct 2015 07:19:42 -0500
+Subject: [PATCH 3/3] no ldconfig
+
+---
+ src/ccall.cpp | 6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
+diff --git a/src/ccall.cpp b/src/ccall.cpp
+index 22015ff..2821192 100644
+--- a/src/ccall.cpp
++++ b/src/ccall.cpp
+@@ -13,11 +13,7 @@ extern "C" DLLEXPORT void jl_read_sonames(void)
+ {
+     char *line=NULL;
+     size_t sz=0;
+-#if defined(__linux__)
+-    FILE *ldc = popen("/sbin/ldconfig -p", "r");
+-#else
+-    FILE *ldc = popen("/sbin/ldconfig -r", "r");
+-#endif
++    FILE *ldc = popen("true", "r");
+ 
+     while (!feof(ldc)) {
+         ssize_t n = getline(&line, &sz, ldc);
+-- 
+2.5.2
+
diff --git a/pkgs/development/compilers/julia/default.nix b/pkgs/development/compilers/julia/default.nix
new file mode 100644
index 000000000000..5df0a35aae8e
--- /dev/null
+++ b/pkgs/development/compilers/julia/default.nix
@@ -0,0 +1,157 @@
+{ stdenv, fetchgit, fetchurl
+# build tools
+, gfortran, m4, makeWrapper, patchelf, perl, which, python2
+# libjulia dependencies
+, libunwind, llvm, readline, utf8proc, zlib
+# standard library dependencies
+, curl, fftwSinglePrec, fftw, gmp, libgit2, mpfr, openlibm, openspecfun, pcre2
+# linear algebra
+, openblas, arpack, suitesparse
+}:
+
+with stdenv.lib;
+
+# All dependencies must use the same OpenBLAS.
+let
+  arpack_ = arpack;
+  suitesparse_ = suitesparse;
+in
+let
+  arpack = arpack_.override { inherit openblas; };
+  suitesparse = suitesparse_.override { inherit openblas; };
+in
+
+let
+  dsfmtVersion = "2.2.3";
+  dsfmt = fetchurl {
+    url = "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/dSFMT-src-${dsfmtVersion}.tar.gz";
+    sha256 = "03kaqbjbi6viz0n33dk5jlf6ayxqlsq4804n7kwkndiga9s4hd42";
+  };
+
+  libuvVersion = "28f5f06b5ff6f010d666ec26552e0badaca5cdcd";
+  libuv = fetchurl {
+    url = "https://api.github.com/repos/JuliaLang/libuv/tarball/${libuvVersion}";
+    sha256 = "1ksns0aiayxmxffvq2kc96904mxlmbkfc30xxck69xnidr2jvr4a";
+  };
+
+  rmathVersion = "0.1";
+  rmath-julia = fetchurl {
+    url = "https://api.github.com/repos/JuliaLang/Rmath-julia/tarball/v${rmathVersion}";
+    sha256 = "0ai5dhjc43zcvangz123ryxmlbm51s21rg13bllwyn98w67arhb4";
+  };
+in
+
+stdenv.mkDerivation rec {
+  pname = "julia";
+  version = "0.4.0";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "https://github.com/JuliaLang/${pname}/releases/download/v${version}/${name}.tar.gz";
+    sha256 = "00k53hzbawpqvmkkyzcvbmf1d0ycshzdqk19nwsifv1rmiwjj7ss";
+  };
+
+  prePatch = ''
+    cp "${dsfmt}" "./deps/dsfmt-${dsfmtVersion}.tar.gz"
+    cp "${rmath-julia}" "./deps/Rmath-julia-${rmathVersion}.tar.gz"
+    cp "${libuv}" "./deps/libuv-${libuvVersion}.tar.gz"
+  '';
+
+  patches = [
+    ./0001-use-system-utf8proc.patch
+    ./0002-use-system-suitesparse.patch
+    ./0003-no-ldconfig.patch
+  ];
+
+  postPatch = ''
+    patchShebangs . contrib
+  '';
+
+  buildInputs = [
+    arpack fftw fftwSinglePrec gmp libgit2 libunwind llvm mpfr
+    pcre2 openblas openlibm openspecfun readline suitesparse utf8proc
+    zlib
+  ];
+
+  nativeBuildInputs = [ curl gfortran m4 makeWrapper patchelf perl python2 which ];
+
+  makeFlags =
+    let
+      arch = head (splitString "-" stdenv.system);
+      march = { "x86_64" = "x86-64"; "i686" = "i686"; }."${arch}"
+              or (throw "unsupported architecture: ${arch}");
+      # Julia requires Pentium 4 (SSE2) or better
+      cpuTarget = { "x86_64" = "x86-64"; "i686" = "pentium4"; }."${arch}"
+                  or (throw "unsupported architecture: ${arch}");
+    in [
+      "ARCH=${arch}"
+      "MARCH=${march}"
+      "JULIA_CPU_TARGET=${cpuTarget}"
+      "PREFIX=$(out)"
+      "prefix=$(out)"
+      "SHELL=${stdenv.shell}"
+
+      "USE_SYSTEM_BLAS=1"
+      "USE_BLAS64=${if openblas.blas64 then "1" else "0"}"
+      "LIBBLAS=-lopenblas"
+      "LIBBLASNAME=libopenblas"
+
+      "USE_SYSTEM_LAPACK=1"
+      "LIBLAPACK=-lopenblas"
+      "LIBLAPACKNAME=libopenblas"
+
+      "USE_SYSTEM_SUITESPARSE=1"
+      "SUITESPARSE_LIB=-lsuitesparse"
+      "SUITESPARSE_INC=-I${suitesparse}/include"
+
+      "USE_SYSTEM_ARPACK=1"
+      "USE_SYSTEM_FFTW=1"
+      "USE_SYSTEM_GMP=1"
+      "USE_SYSTEM_LIBGIT2=1"
+      "USE_SYSTEM_LIBUNWIND=1"
+      "USE_SYSTEM_LLVM=1"
+      "USE_SYSTEM_MPFR=1"
+      "USE_SYSTEM_OPENLIBM=1"
+      "USE_SYSTEM_OPENSPECFUN=1"
+      "USE_SYSTEM_PATCHELF=1"
+      "USE_SYSTEM_PCRE=1"
+      "USE_SYSTEM_READLINE=1"
+      "USE_SYSTEM_UTF8PROC=1"
+      "USE_SYSTEM_ZLIB=1"
+    ];
+
+  NIX_CFLAGS_COMPILE = [ "-fPIC" ];
+
+  LD_LIBRARY_PATH = makeSearchPath "lib" [
+    arpack fftw fftwSinglePrec gmp libgit2 mpfr openblas openlibm
+    openspecfun pcre2 suitesparse
+  ];
+
+  dontStrip = true;
+  dontPatchELF = true;
+
+  enableParallelBuilding = true;
+
+  doCheck = true;
+  checkTarget = "testall";
+  # Julia's tests require read/write access to $HOME
+  preCheck = ''
+    export HOME="$NIX_BUILD_TOP"
+  '';
+
+  postInstall = ''
+    for prog in "$out/bin/julia" "$out/bin/julia-debug"; do
+        wrapProgram "$prog" \
+            --prefix LD_LIBRARY_PATH : "$LD_LIBRARY_PATH" \
+            --prefix PATH : "${curl}/bin"
+    done
+  '';
+
+  meta = {
+    description = "High-level performance-oriented dynamical language for technical computing";
+    homepage = "http://julialang.org/";
+    license = stdenv.lib.licenses.mit;
+    maintainers = with stdenv.lib.maintainers; [ raskin ttuegel ];
+    platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ];
+  };
+}
diff --git a/pkgs/development/compilers/llvm/3.3/llvm.nix b/pkgs/development/compilers/llvm/3.3/llvm.nix
index 8dca8b43bc2c..c19955ddaf03 100644
--- a/pkgs/development/compilers/llvm/3.3/llvm.nix
+++ b/pkgs/development/compilers/llvm/3.3/llvm.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, perl, groff, cmake, python, libffi, binutils }:
+{ stdenv, fetchurl, perl, groff, cmake, python, libffi, binutils, debugVersion ? false }:
 let
   version = "3.3";
 in stdenv.mkDerivation rec {
@@ -14,9 +14,17 @@ in stdenv.mkDerivation rec {
     ./no-rule-aarch64.patch          # http://llvm.org/bugs/show_bug.cgi?id=16625
     # Patch needed for Julia, backports fixes from LLVM 3.5
     (fetchurl {
-      url = "https://raw.githubusercontent.com/JuliaLang/julia/3bdda3750efc4ebf8ce7eda8a0888ffef3851605/deps/llvm-3.3.patch";
+      url = "https://raw.githubusercontent.com/JuliaLang/julia/release-0.4/deps/llvm-3.3.patch";
       sha256 = "0j6chyx4k8zr1qha5dks8lqlcraqrj4q1hwnk2kj3qi6cajsd8k3";
     })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/JuliaLang/julia/release-0.4/deps/instcombine-llvm-3.3.patch";
+      sha256 = "161frq3wxrkxah78krb24hp4zkcnphzcgnvkwfq1abq2vjx3f8sn";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/JuliaLang/julia/release-0.4/deps/int128-vector.llvm-3.3.patch";
+      sha256 = "0lzkv6hvsdaalwsyf6sq0vdrf8x5nk58qg6nn5dlw7n3hxaxpm4m";
+    })
   ];
 
   buildInputs = [ perl groff cmake python libffi ];
@@ -26,7 +34,7 @@ in stdenv.mkDerivation rec {
     in "export ${LD}_LIBRARY_PATH='$$${LD}_LIBRARY_PATH:'`pwd`/lib";
 
   cmakeFlags = with stdenv; [
-    "-DCMAKE_BUILD_TYPE=Release"
+    "-DCMAKE_BUILD_TYPE=${if debugVersion then "Debug" else "Release"}"
     "-DLLVM_BUILD_TESTS=ON"
     "-DLLVM_ENABLE_FFI=ON"
     "-DLLVM_BINUTILS_INCDIR=${binutils}/include"
diff --git a/pkgs/development/compilers/llvm/3.4/llvm.nix b/pkgs/development/compilers/llvm/3.4/llvm.nix
index 4c9235681e37..59e8055efb20 100644
--- a/pkgs/development/compilers/llvm/3.4/llvm.nix
+++ b/pkgs/development/compilers/llvm/3.4/llvm.nix
@@ -12,6 +12,7 @@
 , version
 , zlib
 , compiler-rt_src
+, debugVersion ? false
 }:
 
 let
@@ -41,7 +42,7 @@ in stdenv.mkDerivation rec {
   '';
 
   cmakeFlags = with stdenv; [
-    "-DCMAKE_BUILD_TYPE=Release"
+    "-DCMAKE_BUILD_TYPE=${if debugVersion then "Debug" else "Release"}"
     "-DLLVM_BUILD_TESTS=ON"
     "-DLLVM_ENABLE_FFI=ON"
     "-DLLVM_REQUIRES_RTTI=1"
diff --git a/pkgs/development/compilers/llvm/3.5/llvm.nix b/pkgs/development/compilers/llvm/3.5/llvm.nix
index 395843bf0d8f..8daba7b1d9cd 100644
--- a/pkgs/development/compilers/llvm/3.5/llvm.nix
+++ b/pkgs/development/compilers/llvm/3.5/llvm.nix
@@ -12,6 +12,7 @@
 , version
 , zlib
 , compiler-rt_src
+, debugVersion ? false
 }:
 
 let
@@ -38,7 +39,7 @@ in stdenv.mkDerivation rec {
   '';
 
   cmakeFlags = with stdenv; [
-    "-DCMAKE_BUILD_TYPE=Release"
+    "-DCMAKE_BUILD_TYPE=${if debugVersion then "Debug" else "Release"}"
     "-DLLVM_BUILD_TESTS=ON"
     "-DLLVM_ENABLE_FFI=ON"
     "-DLLVM_REQUIRES_RTTI=1"
diff --git a/pkgs/development/compilers/llvm/3.6/llvm.nix b/pkgs/development/compilers/llvm/3.6/llvm.nix
index d757b9314c35..6da31fbbf5b3 100644
--- a/pkgs/development/compilers/llvm/3.6/llvm.nix
+++ b/pkgs/development/compilers/llvm/3.6/llvm.nix
@@ -12,6 +12,7 @@
 , version
 , zlib
 , compiler-rt_src
+, debugVersion ? false
 }:
 
 let
@@ -38,7 +39,7 @@ in stdenv.mkDerivation rec {
   '';
 
   cmakeFlags = with stdenv; [
-    "-DCMAKE_BUILD_TYPE=Release"
+    "-DCMAKE_BUILD_TYPE=${if debugVersion then "Debug" else "Release"}"
     "-DLLVM_BUILD_TESTS=ON"
     "-DLLVM_ENABLE_FFI=ON"
     "-DLLVM_ENABLE_RTTI=ON"
diff --git a/pkgs/development/compilers/llvm/3.7/libc++/default.nix b/pkgs/development/compilers/llvm/3.7/libc++/default.nix
index cd985d89098d..db1475cfc14f 100644
--- a/pkgs/development/compilers/llvm/3.7/libc++/default.nix
+++ b/pkgs/development/compilers/llvm/3.7/libc++/default.nix
@@ -12,15 +12,6 @@ stdenv.mkDerivation rec {
   preConfigure = ''
     # Get headers from the cxxabi source so we can see private headers not installed by the cxxabi package
     cmakeFlagsArray=($cmakeFlagsArray -DLIBCXX_CXX_ABI_INCLUDE_PATHS="$NIX_BUILD_TOP/libcxxabi-${version}.src/include")
-  '' +
-  stdenv.lib.optionalString stdenv.isDarwin ''
-    # instead of allowing libc++ to link with /usr/lib/libc++abi.dylib,
-    # force it to link with our copy
-    substituteInPlace lib/CMakeLists.txt \
-      --replace 'OSX_RE_EXPORT_LINE "/usr/lib/libc++abi.dylib' \
-                'OSX_RE_EXPORT_LINE "${libcxxabi}/lib/libc++abi.dylib' \
-      --replace '"''${CMAKE_OSX_SYSROOT}/usr/lib/libc++abi.dylib"' \
-                '"${libcxxabi}/lib/libc++abi.dylib"'
   '';
 
   patches = [ ./darwin.patch ];
diff --git a/pkgs/development/compilers/llvm/3.7/libc++abi.nix b/pkgs/development/compilers/llvm/3.7/libc++abi.nix
index a1b300ffa04f..97f182a9af81 100644
--- a/pkgs/development/compilers/llvm/3.7/libc++abi.nix
+++ b/pkgs/development/compilers/llvm/3.7/libc++abi.nix
@@ -27,7 +27,7 @@ stdenv.mkDerivation {
       done
       make install
       install -d 755 $out/include
-      install -m 644 ../include/cxxabi.h $out/include
+      install -m 644 ../include/*.h $out/include
     ''
     else ''
       install -d -m 755 $out/include $out/lib
diff --git a/pkgs/development/compilers/llvm/3.7/llvm.nix b/pkgs/development/compilers/llvm/3.7/llvm.nix
index 361ae4ba1177..57fd3433fa5e 100644
--- a/pkgs/development/compilers/llvm/3.7/llvm.nix
+++ b/pkgs/development/compilers/llvm/3.7/llvm.nix
@@ -12,6 +12,8 @@
 , version
 , zlib
 , compiler-rt_src
+, libcxxabi
+, debugVersion ? false
 }:
 
 let
@@ -27,7 +29,8 @@ in stdenv.mkDerivation rec {
     mv compiler-rt-* $sourceRoot/projects/compiler-rt
   '';
 
-  buildInputs = [ perl groff cmake libxml2 python libffi ] /* ++ stdenv.lib.optional stdenv.isLinux valgrind */;
+  buildInputs = [ perl groff cmake libxml2 python libffi ]
+    ++ stdenv.lib.optional stdenv.isDarwin libcxxabi;
 
   propagatedBuildInputs = [ ncurses zlib ];
 
@@ -38,7 +41,7 @@ in stdenv.mkDerivation rec {
   '';
 
   cmakeFlags = with stdenv; [
-    "-DCMAKE_BUILD_TYPE=Release"
+    "-DCMAKE_BUILD_TYPE=${if debugVersion then "Debug" else "Release"}"
     "-DLLVM_INSTALL_UTILS=ON"  # Needed by rustc
     "-DLLVM_BUILD_TESTS=ON"
     "-DLLVM_ENABLE_FFI=ON"
@@ -47,7 +50,7 @@ in stdenv.mkDerivation rec {
     "-DBUILD_SHARED_LIBS=ON"
     "-DLLVM_BINUTILS_INCDIR=${binutils}/include"
   ] ++ stdenv.lib.optionals ( isDarwin) [
-    "-DCMAKE_CXX_FLAGS=-stdlib=libc++"
+    "-DLLVM_ENABLE_LIBCXX=ON"
     "-DCAN_TARGET_i386=false"
   ];
 
diff --git a/pkgs/development/compilers/mkcl/default.nix b/pkgs/development/compilers/mkcl/default.nix
index 39196dba8caf..7158ffab9185 100644
--- a/pkgs/development/compilers/mkcl/default.nix
+++ b/pkgs/development/compilers/mkcl/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchgit, gmp }:
+{ stdenv, fetchgit, makeWrapper, gmp, gcc }:
 
 stdenv.mkDerivation rec {
   v = "1.1.9";
@@ -10,6 +10,7 @@ stdenv.mkDerivation rec {
     sha256 = "0ja7vyp5rjidb2a1gah35jqzqn6zjkikz5sd966p0f0wh26l6n03";
   };
 
+  buildInputs = [ makeWrapper ];
   propagatedBuildInputs = [ gmp ];
 
   configureFlags = [
@@ -17,6 +18,10 @@ stdenv.mkDerivation rec {
     "GMP_LDFLAGS=-L${gmp.out}/lib"
   ];
 
+  postInstall = ''
+    wrapProgram $out/bin/mkcl --prefix PATH : "${gcc}/bin"
+  '';
+
   meta = {
     description = "ANSI Common Lisp Implementation";
     homepage = https://common-lisp.net/project/mkcl/;
diff --git a/pkgs/development/compilers/mono/default.nix b/pkgs/development/compilers/mono/default.nix
index 306e287fbc26..a7a4d8da4edc 100644
--- a/pkgs/development/compilers/mono/default.nix
+++ b/pkgs/development/compilers/mono/default.nix
@@ -6,10 +6,10 @@ let
 in
 stdenv.mkDerivation rec {
   name = "mono-${version}";
-  version = "4.0.3.20";
+  version = "4.0.4.1";
   src = fetchurl {
     url = "http://download.mono-project.com/sources/mono/${name}.tar.bz2";
-    sha256 = "1z0k8gv5z3yrkjhi2yjaqj42p55jn5h3q4z890gkcrlvmgihnv4p";
+    sha256 = "1ydw9l89apc9p7xr5mdzy0h97g2q6v243g82mxswfc2rrqhfs4gd";
   };
 
   buildInputs =
diff --git a/pkgs/development/compilers/mozart/binary.nix b/pkgs/development/compilers/mozart/binary.nix
index a420ef9c292c..ae040297313c 100644
--- a/pkgs/development/compilers/mozart/binary.nix
+++ b/pkgs/development/compilers/mozart/binary.nix
@@ -1,11 +1,12 @@
-{ stdenv, fetchurl, bash, makeWrapper, coreutils, emacs, tcl, tk, boost, gmp, cacert }:
-
-assert stdenv.isLinux;
+{ stdenv, fetchurl, boost, emacs, gmp, makeWrapper
+, tcl-8_5, tk-8_5
+}:
 
 let
+
   version = "2.0.0";
-in
-stdenv.mkDerivation {
+
+in stdenv.mkDerivation {
   name = "mozart-binary-${version}";
 
   src = fetchurl {
@@ -14,7 +15,15 @@ stdenv.mkDerivation {
   };
 
   libPath = stdenv.lib.makeLibraryPath
-    [stdenv.cc.cc emacs tk tcl boost gmp];
+    [ stdenv.cc.cc
+      boost
+      emacs
+      gmp
+      tcl-8_5
+      tk-8_5
+    ];
+
+  TK_LIBRARY = "${tk-8_5}/lib/tk8.5";
 
   builder = ./builder.sh;
 
diff --git a/pkgs/development/compilers/mozart/builder.sh b/pkgs/development/compilers/mozart/builder.sh
index 75914121611d..b606d4c1bde9 100644
--- a/pkgs/development/compilers/mozart/builder.sh
+++ b/pkgs/development/compilers/mozart/builder.sh
@@ -12,13 +12,15 @@ mv mozart*linux/share/* $out/share
 patchShebangs $out
 
 for f in $out/bin/*; do
-  b=$(basename $f)
-  if [ $b == "ozemulator" ] || [ $b == "ozwish" ]; then
-     patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
-	 --set-rpath $libPath \
-	 $f
-    continue;
-  fi
-  wrapProgram $f \
-    --set OZHOME $out
+    b=$(basename $f)
+
+    if [ $b == "ozemulator" ] || [ $b == "ozwish" ]; then
+        patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+                 --set-rpath $libPath \
+                 $f
+        continue;
+    fi
+
+    wrapProgram $f --set OZHOME $out \
+                   --set TK_LIBRARY $TK_LIBRARY
 done
diff --git a/pkgs/development/compilers/ocaml/4.02.1.nix b/pkgs/development/compilers/ocaml/4.02.nix
index d70fe3384e03..7338f8b36745 100644
--- a/pkgs/development/compilers/ocaml/4.02.1.nix
+++ b/pkgs/development/compilers/ocaml/4.02.nix
@@ -21,11 +21,11 @@ stdenv.mkDerivation rec {
   x11lib = x11env + "/lib";
   x11inc = x11env + "/include";
 
-  name = "ocaml-4.02.1";
+  name = "ocaml-4.02.3";
 
   src = fetchurl {
     url = "http://caml.inria.fr/pub/distrib/ocaml-4.02/${name}.tar.xz";
-    sha256 = "1p7lqvh64xpykh99014mz21q8fs3qyjym2qazhhbq8scwldv1i38";
+    sha256 = "1qwwvy8nzd87hk8rd9sm667nppakiapnx4ypdwcrlnav2dz6kil3";
   };
 
   patches = [ patchOcamlBuild ];
diff --git a/pkgs/development/compilers/openjdk/004_add-fontconfig.patch b/pkgs/development/compilers/openjdk/004_add-fontconfig.patch
new file mode 100644
index 000000000000..8172bc821905
--- /dev/null
+++ b/pkgs/development/compilers/openjdk/004_add-fontconfig.patch
@@ -0,0 +1,14 @@
+This patch was downloaded from https://aur.archlinux.org/cgit/aur.git/tree/?h=java8-openjdk
+More info can be found at http://www.infinality.net/forum/viewtopic.php?f=2&t=275
+diff -ur a/jdk/make/lib/Awt2dLibraries.gmk b/jdk/make/lib/Awt2dLibraries.gmk
+--- a/jdk/make/lib/Awt2dLibraries.gmk	2015-07-13 20:50:59.000000000 +0300
++++ b/jdk/make/lib/Awt2dLibraries.gmk	2015-08-24 12:12:22.930330643 +0300
+@@ -824,7 +824,7 @@
+     LDFLAGS := $(subst -Xlinker -z -Xlinker defs,,$(LDFLAGS_JDKLIB)) $(LDFLAGS_CXX_JDK) \
+         $(call SET_SHARED_LIBRARY_ORIGIN), \
+     LDFLAGS_SUFFIX := $(BUILD_LIBFONTMANAGER_FONTLIB), \
+-    LDFLAGS_SUFFIX_linux := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \
++    LDFLAGS_SUFFIX_linux := -lfontconfig -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \
+     LDFLAGS_SUFFIX_solaris := -lawt -lawt_headless -lc $(LIBM) $(LIBCXX) -ljava -ljvm, \
+     LDFLAGS_SUFFIX_aix := -lawt -lawt_headless $(LIBM) $(LIBCXX) -ljava -ljvm,\
+     LDFLAGS_SUFFIX_macosx := -lawt $(LIBM) $(LIBCXX) -undefined dynamic_lookup \
diff --git a/pkgs/development/compilers/openjdk/005_enable-infinality.patch b/pkgs/development/compilers/openjdk/005_enable-infinality.patch
new file mode 100644
index 000000000000..f8de96989967
--- /dev/null
+++ b/pkgs/development/compilers/openjdk/005_enable-infinality.patch
@@ -0,0 +1,261 @@
+This patch was downloaded from https://aur.archlinux.org/cgit/aur.git/tree/?h=java8-openjdk
+More info can be found at http://www.infinality.net/forum/viewtopic.php?f=2&t=275
+diff -ur a/jdk/src/share/native/sun/font/freetypeScaler.c b/jdk/src/share/native/sun/font/freetypeScaler.c
+--- a/jdk/src/share/native/sun/font/freetypeScaler.c	2014-09-14 16:28:06.108295959 +0200
++++ b/jdk/src/share/native/sun/font/freetypeScaler.c	2014-09-14 16:28:45.569693174 +0200
+@@ -23,6 +23,9 @@
+  * questions.
+  */
+ 
++/* Use Infinality patches as default */
++#define INFINALITY
++
+ #include "jni.h"
+ #include "jni_util.h"
+ #include "jlong.h"
+@@ -38,6 +41,10 @@
+ #include FT_SIZES_H
+ #include FT_OUTLINE_H
+ #include FT_SYNTHESIS_H
++#ifdef INFINALITY
++#include FT_LCD_FILTER_H
++#include <fontconfig/fontconfig.h>
++#endif
+ 
+ #include "fontscaler.h"
+ 
+@@ -676,6 +683,147 @@ static void CopyFTSubpixelVToSubpixel(co
+     }
+ }
+ 
++#ifdef INFINALITY
++typedef struct {
++    FT_Render_Mode ftRenderMode;
++    int ftLoadFlags;
++    FT_LcdFilter ftLcdFilter;
++} RenderingProperties;
++
++static FcPattern* matchedPattern(const FcChar8* family, double ptSize) {
++    /*
++      we will create pattern to find our family and size in
++      fontconfig configuration, and then will return it's
++      properties:
++    */
++    FcPattern* fcPattern = 0;
++    fcPattern = FcPatternCreate();
++    FcValue fcValue;
++    fcValue.type = FcTypeString;
++    fcValue.u.s = family;
++    FcPatternAdd(fcPattern, FC_FAMILY, fcValue, FcTrue);
++    FcPatternAddBool(fcPattern, FC_SCALABLE, FcTrue);
++    FcPatternAddDouble(fcPattern, FC_SIZE, ptSize);
++    // TODO FcPatternAddInteger(pattern, FC_WEIGHT, weight_value);
++    // TODO FcPatternAddInteger(pattern, FC_SLANT, slant_value);
++    // TODO FcPatternAddDouble(pattern, FC_PIXEL_SIZE, size_value);
++    // TODO FcPatternAddInteger(pattern, FC_WIDTH, stretch); 100 in most cases
++    FcConfigSubstitute(0, fcPattern, FcMatchPattern);
++    FcConfigSubstitute(0, fcPattern, FcMatchFont);
++    FcDefaultSubstitute(fcPattern);
++    FcResult res;
++
++    FcPattern *pattern = 0;
++    pattern = FcFontMatch(0, fcPattern, &res);
++    FcPatternDestroy(fcPattern);
++    return pattern;
++}
++
++static void readFontconfig(const FcChar8* family, double ptSize, jint aaType, RenderingProperties* rp) {
++
++    FcPattern *pattern = matchedPattern(family, ptSize);
++
++    int ftLoadFalgs = FT_LOAD_DEFAULT;
++    FT_Render_Mode ftRenderMode;
++    FT_LcdFilter ftLcdFilter;
++    char horizontal = 1;
++    FcBool b;
++
++    // subpixel order:
++    if (aaType == TEXT_AA_ON)
++        ftRenderMode = FT_RENDER_MODE_NORMAL;
++    else if (aaType == TEXT_AA_OFF)
++        ftRenderMode = FT_RENDER_MODE_MONO;
++    else if (FcPatternGetBool(pattern, FC_ANTIALIAS, 0, &b) == FcResultMatch)
++        if (b) {
++            int subpixel = FC_RGBA_UNKNOWN;
++            FcPatternGetInteger(pattern, FC_RGBA, 0, &subpixel);
++            if (subpixel == FC_RGBA_UNKNOWN)
++                subpixel = FC_RGBA_NONE;
++                switch (subpixel) {
++                case FC_RGBA_NONE:
++                    ftRenderMode = FT_RENDER_MODE_NORMAL;
++                    break;
++                case FC_RGBA_RGB:
++                case FC_RGBA_BGR:
++                    ftRenderMode = FT_RENDER_MODE_LCD;
++                    horizontal = 1;
++                    break;
++                case FC_RGBA_VRGB:
++                case FC_RGBA_VBGR:
++                    ftRenderMode = FT_RENDER_MODE_LCD_V;
++                    horizontal = 0;
++                    break;
++                default:
++                    break;
++                }
++            } else {
++                ftRenderMode = FT_RENDER_MODE_NORMAL;
++            }
++
++    // loading mode:
++    if (aaType == TEXT_AA_OFF)
++        ftLoadFalgs |= FT_LOAD_TARGET_MONO;
++    else {
++        int hint_style = FC_HINT_NONE;
++        FcPatternGetInteger(pattern, FC_HINT_STYLE, 0, &hint_style);
++        switch (hint_style) {
++        case FC_HINT_NONE:
++            ftLoadFalgs |= FT_LOAD_NO_HINTING;
++            break;
++        case FC_HINT_SLIGHT:
++            ftLoadFalgs |= FT_LOAD_TARGET_LIGHT;
++            break;
++        case FC_HINT_MEDIUM:
++            ftLoadFalgs |= FT_LOAD_TARGET_NORMAL;
++            break;
++        case FC_HINT_FULL:
++            if (aaType == TEXT_AA_ON)
++                ftLoadFalgs |= FT_LOAD_TARGET_NORMAL;
++            else
++                ftLoadFalgs |= horizontal ? FT_LOAD_TARGET_LCD : FT_LOAD_TARGET_LCD_V;
++            break;
++        default:
++            // what else to use as default?
++            ftLoadFalgs |= FT_LOAD_TARGET_NORMAL;
++            break;
++        }
++    }
++
++    // autohinting:
++    if (FcPatternGetBool(pattern, FC_AUTOHINT, 0, &b) == FcResultMatch)
++        if (b)
++            ftLoadFalgs |= FT_LOAD_FORCE_AUTOHINT;
++
++    // LCD filter:
++    int filter = FC_LCD_DEFAULT;
++    FcPatternGetInteger(pattern, FC_LCD_FILTER, 0, &filter);
++    switch (filter) {
++    case FC_LCD_NONE:
++        ftLcdFilter = FT_LCD_FILTER_NONE;
++        break;
++    case FC_LCD_DEFAULT:
++        ftLcdFilter = FT_LCD_FILTER_DEFAULT;
++        break;
++    case FC_LCD_LIGHT:
++        ftLcdFilter = FT_LCD_FILTER_LIGHT;
++        break;
++    case FC_LCD_LEGACY:
++        ftLcdFilter = FT_LCD_FILTER_LEGACY;
++        break;
++    default:
++        // new unknown lcd filter type?! will use default one:
++        ftLcdFilter = FT_LCD_FILTER_DEFAULT;
++        break;
++    }
++
++    FcPatternDestroy(pattern);
++
++    rp->ftRenderMode = ftRenderMode;
++    rp->ftLoadFlags = ftLoadFalgs;
++    rp->ftLcdFilter = ftLcdFilter;
++}
++#endif
+ 
+ /*
+  * Class:     sun_font_FreetypeFontScaler
+@@ -691,7 +839,9 @@ Java_sun_font_FreetypeFontScaler_getGlyp
+     UInt16 width, height;
+     GlyphInfo *glyphInfo;
+     int glyph_index;
++#ifndef INFINALITY
+     int renderFlags = FT_LOAD_RENDER, target;
++#endif
+     FT_GlyphSlot ftglyph;
+ 
+     FTScalerContext* context =
+@@ -709,6 +859,11 @@ Java_sun_font_FreetypeFontScaler_getGlyp
+         return ptr_to_jlong(getNullGlyphImage());
+     }
+ 
++#ifdef INFINALITY
++    RenderingProperties renderingProperties;
++    readFontconfig((const FcChar8 *) scalerInfo->face->family_name,
++                   context->ptsz, context->aaType, &renderingProperties);
++#else
+     /* if algorithmic styling is required then we do not request bitmap */
+     if (context->doBold || context->doItalize) {
+         renderFlags =  FT_LOAD_DEFAULT;
+@@ -731,10 +886,17 @@ Java_sun_font_FreetypeFontScaler_getGlyp
+         target = FT_LOAD_TARGET_LCD_V;
+     }
+     renderFlags |= target;
++#endif
+ 
+     glyph_index = FT_Get_Char_Index(scalerInfo->face, glyphCode);
+ 
++#ifdef INFINALITY
++    FT_Library_SetLcdFilter(scalerInfo->library, renderingProperties.ftLcdFilter);
++    error = FT_Load_Glyph(scalerInfo->face, glyphCode, renderingProperties.ftLoadFlags);
++#else
+     error = FT_Load_Glyph(scalerInfo->face, glyphCode, renderFlags);
++#endif
++
+     if (error) {
+         //do not destroy scaler yet.
+         //this can be problem of particular context (e.g. with bad transform)
+@@ -753,9 +915,13 @@ Java_sun_font_FreetypeFontScaler_getGlyp
+ 
+     /* generate bitmap if it is not done yet
+      e.g. if algorithmic styling is performed and style was added to outline */
++#ifdef INFINALITY
++    FT_Render_Glyph(ftglyph, renderingProperties.ftRenderMode);
++#else
+     if (ftglyph->format == FT_GLYPH_FORMAT_OUTLINE) {
+         FT_Render_Glyph(ftglyph, FT_LOAD_TARGET_MODE(target));
+     }
++#endif
+ 
+     width  = (UInt16) ftglyph->bitmap.width;
+     height = (UInt16) ftglyph->bitmap.rows;
+@@ -969,7 +1135,9 @@ Java_sun_font_FreetypeFontScaler_getGlyp
+ static FT_Outline* getFTOutline(JNIEnv* env, jobject font2D,
+         FTScalerContext *context, FTScalerInfo* scalerInfo,
+         jint glyphCode, jfloat xpos, jfloat ypos) {
++#ifndef INFINALITY
+     int renderFlags;
++#endif
+     int glyph_index;
+     FT_Error error;
+     FT_GlyphSlot ftglyph;
+@@ -984,11 +1152,22 @@ static FT_Outline* getFTOutline(JNIEnv*
+         return NULL;
+     }
+ 
++#ifdef INFINALITY
++    RenderingProperties renderingProperties;
++    readFontconfig((const FcChar8 *) scalerInfo->face->family_name,
++                   context->ptsz, context->aaType, &renderingProperties);
++#else
+     renderFlags = FT_LOAD_NO_HINTING | FT_LOAD_NO_BITMAP;
++#endif
+ 
+     glyph_index = FT_Get_Char_Index(scalerInfo->face, glyphCode);
+ 
++#ifdef INFINALITY
++    error = FT_Load_Glyph(scalerInfo->face, glyphCode, renderingProperties.ftLoadFlags);
++#else
+     error = FT_Load_Glyph(scalerInfo->face, glyphCode, renderFlags);
++#endif
++
+     if (error) {
+         return NULL;
+     }
diff --git a/pkgs/development/compilers/openjdk/7.nix b/pkgs/development/compilers/openjdk/7.nix
index 12d32a134c8e..de803a5d90c5 100644
--- a/pkgs/development/compilers/openjdk/7.nix
+++ b/pkgs/development/compilers/openjdk/7.nix
@@ -17,9 +17,9 @@ let
     else
       throw "openjdk requires i686-linux or x86_64 linux";
 
-  update = "80";
+  update = "91";
 
-  build = "32";
+  build = "01";
 
   # On x86 for heap sizes over 700MB disable SEGMEXEC and PAGEEXEC as well.
   paxflags = if stdenv.isi686 then "msp" else "m";
@@ -33,31 +33,31 @@ let
   repover = "jdk7u${update}-b${build}";
   jdk7 = fetchurl {
     url = "${baseurl}/archive/${repover}.tar.gz";
-    sha256 = "1r8xnn87nmqaq2f8i3cp3i9ngq66k0c0wgkdq5cf59lkgs8wkcdi";
+    sha256 = "08f7cbayyrryim3xbrs12cr12i1mczcikyc9rdlsyih0r4xvll28";
   };
   langtools = fetchurl {
     url = "${baseurl}/langtools/archive/${repover}.tar.gz";
-    sha256 = "01alj6pfrjqyf4irll9wg34h4w9nmb3973lvbacs528qm1nxgh9r";
+    sha256 = "0rmlzrgsacn60blpg1sp30k6p0sgzsml8wb41yc998km1bsnjxnh";
   };
   hotspot = fetchurl {
     url = "${baseurl}/hotspot/archive/${repover}.tar.gz";
-    sha256 = "14zla8axmg5344zf45i4cj7yyli0kmdjsh9yalmzqaphpkqjqpf2";
+    sha256 = "1w1n81y9jcvjzssl4049yzfc0gdfnh73ki6wg1d8pg22zlyhrrwv";
   };
   corba = fetchurl {
     url = "${baseurl}/corba/archive/${repover}.tar.gz";
-    sha256 = "19z3ay3f2q7r2ra03c6wy8b5rbdbrkq5g2dzhrqcg0n4iydd3c40";
+    sha256 = "086yr927bxnlgljx7mw2cg6f6aip57hi4qpn1h35n6fsyvb4n67h";
   };
   jdk = fetchurl {
     url = "${baseurl}/jdk/archive/${repover}.tar.gz";
-    sha256 = "1q0r2l9bz2cyx4fq79x6cb2f5xycw83hl5cn1d1mazgsckp590lb";
+    sha256 = "14r39ylj3qa63arpqxl0h84baah1kjgnyp3v9d7d4vd0yagpn66b";
   };
   jaxws = fetchurl {
     url = "${baseurl}/jaxws/archive/${repover}.tar.gz";
-    sha256 = "1lp0mww2x3b6xavb7idrzckh6iw8jd6s1fvqgfvzs853z4ifksqj";
+    sha256 = "1p1739gb5gx9m4sm3i4javfk9lk41wnz92k6gis6sq99dd1bj1l5";
   };
   jaxp = fetchurl {
     url = "${baseurl}/jaxp/archive/${repover}.tar.gz";
-    sha256 = "0pd874dkgxkb7frxg4n9py61kkhhck4x33dcynynwb3vl6k6iy79";
+    sha256 = "1nl3kmbwqhhymcp25rnmf5mr3dn87lgdxvz9wgng7if6yqxlyakq";
   };
   openjdk = stdenv.mkDerivation rec {
     name = "openjdk-7u${update}b${build}";
@@ -100,7 +100,6 @@ let
       ./paxctl.patch
       ./read-truststore-from-env.patch
       ./currency-date-range.patch
-      ./linux-4.0.patch
     ];
 
     NIX_NO_SELF_RPATH = true;
diff --git a/pkgs/development/compilers/openjdk/8.nix b/pkgs/development/compilers/openjdk/8.nix
index 1a280b1d542d..48d7dd5dffbf 100644
--- a/pkgs/development/compilers/openjdk/8.nix
+++ b/pkgs/development/compilers/openjdk/8.nix
@@ -2,6 +2,7 @@
 , alsaLib, bootjdk, cacert, perl, liberation_ttf, fontconfig, zlib
 , setJavaClassPath
 , minimal ? false
+, enableInfinality ? true # font rendering patch
 }:
 
 let
@@ -17,42 +18,42 @@ let
     else
       throw "openjdk requires i686-linux or x86_64 linux";
 
-  update = "60";
-  build = "24";
+  update = "76";
+  build = "00";
   baseurl = "http://hg.openjdk.java.net/jdk8u/jdk8u";
   repover = "jdk8u${update}-b${build}";
   paxflags = if stdenv.isi686 then "msp" else "m";
   jdk8 = fetchurl {
              url = "${baseurl}/archive/${repover}.tar.gz";
-             sha256 = "1gxfyz5kdl3xgfmn6gr65hj66zh5p67y1g0hxdbps1h8gcc6iqwp";
+             sha256 = "1bzwrm18vdd531xxin7pzsc5dx2ybkdgdxz6jp2ki19ka6pmk1l7";
           };
   langtools = fetchurl {
              url = "${baseurl}/langtools/archive/${repover}.tar.gz";
-             sha256 = "0a8kmfcnw92hvhivmpa9g22k1lvcr64zjw7x1gjj1j6zx7r579ck";
+             sha256 = "044gyb7hgrahlr78vah9r3wfv6w569ihqzwqplwzr6m0l1s52994";
           };
   hotspot = fetchurl {
              url = "${baseurl}/hotspot/archive/${repover}.tar.gz";
-             sha256 = "0k68wqwg5fz8i2za9dg2zfx4db5zcbls31vk2abrqrwp31ik0y4y";
+             sha256 = "1if70s9wjsvmrdj92ky88ngpmigi9c5gfpkilpydzdibs38f05f8";
           };
   corba = fetchurl {
              url = "${baseurl}/corba/archive/${repover}.tar.gz";
-             sha256 = "0rc8m5jrwjzrbxnzbhxjm265z23ky6v11g8sgcb6flr0l636fwvn";
+             sha256 = "0fl852x25cjzz3lrhjnhj59qbb4m3ywwc2f9vbj6mqdnpzl7cg83";
           };
   jdk = fetchurl {
              url = "${baseurl}/jdk/archive/${repover}.tar.gz";
-             sha256 = "11c90zz728p30zc6zas9ip67n9sd09i0v6afxs608k9s451057wr";
+             sha256 = "11ql3p5fsizrn1fiylfkgrw0lgf6snwyich18hggsmd00bhvv3ah";
           };
   jaxws = fetchurl {
              url = "${baseurl}/jaxws/archive/${repover}.tar.gz";
-             sha256 = "15pzczqwrr47qv51bsisjylilhljban8938n1436hsjd5k1dhhwn";
+             sha256 = "1d2q4bbvlz557caqciwpd5ms9f14bjk8jl5zlfflqnww9b097qy4";
           };
   jaxp = fetchurl {
              url = "${baseurl}/jaxp/archive/${repover}.tar.gz";
-             sha256 = "0gcc7pb07yl76drcynpz5gjjv3y6s1c0k4kfp9fayha5f624k1fb";
+             sha256 = "0nrd4c77ggxkyv2271k30afbjjcp0kybc8gcypmhy8by54w4ap0j";
           };
   nashorn = fetchurl {
              url = "${baseurl}/nashorn/archive/${repover}.tar.gz";
-             sha256 = "00g849wwqxljqpml6r7rv3pscj0ma0jaamyvxsxlfxbqvwid93ai";
+             sha256 = "11idvkzk4nqhhw4xq5pl03g4gwnaiq021xxj2yx54rixr59zl0q6";
           };
   openjdk8 = stdenv.mkDerivation {
     name = "openjdk-8u${update}b${build}";
@@ -81,7 +82,10 @@ let
       ./fix-java-home-jdk8.patch
       ./read-truststore-from-env-jdk8.patch
       ./currency-date-range-jdk8.patch
-    ];
+    ] ++ (if enableInfinality then [
+      ./004_add-fontconfig.patch
+      ./005_enable-infinality.patch
+    ] else []);
 
     preConfigure = ''
       chmod +x configure
diff --git a/pkgs/development/compilers/oraclejdk/jdk-linux-base.nix b/pkgs/development/compilers/oraclejdk/jdk-linux-base.nix
index 5d294d5c43de..5ac7c417ba2e 100644
--- a/pkgs/development/compilers/oraclejdk/jdk-linux-base.nix
+++ b/pkgs/development/compilers/oraclejdk/jdk-linux-base.nix
@@ -182,6 +182,8 @@ let result = stdenv.mkDerivation rec {
 
   passthru.home = result;
 
+  passthru.architecture = architecture;
+
   meta = with stdenv.lib; {
     license = licenses.unfree;
     platforms = [ "i686-linux" "x86_64-linux" ]; # some inherit jre.meta.platforms
diff --git a/pkgs/development/compilers/oraclejdk/jdk8-linux.nix b/pkgs/development/compilers/oraclejdk/jdk8-linux.nix
index 4fc3ea319277..258af23a1bc9 100644
--- a/pkgs/development/compilers/oraclejdk/jdk8-linux.nix
+++ b/pkgs/development/compilers/oraclejdk/jdk8-linux.nix
@@ -1,9 +1,9 @@
 import ./jdk-linux-base.nix {
   productVersion = "8";
-  patchVersion = "60";
+  patchVersion = "65";
   downloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html;
-  sha256_i686 = "e6a36b458351ed35bd7943739ba93d9a246e08a86433e148ff68b1b40d74c2e5";
-  sha256_x86_64 = "ebe51554d2f6c617a4ae8fc9a8742276e65af01bd273e96848b262b3c05424e5";
+  sha256_i686 = "1shri8mw648piivyparbpzskiq4i0z6kain9kr7ylav5mv7h66fg";
+  sha256_x86_64 = "1rr6g2sb0f1vyf3l9nvj49ah28bsid92z0lj9pfjlb12vjn2mnw8";
   jceName = "jce_policy-8.zip";
   jceDownloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html;
   sha256JCE = "0n8b6b8qmwb14lllk2lk1q1ahd3za9fnjigz5xn65mpg48whl0pk";
diff --git a/pkgs/development/compilers/oraclejdk/jdk8psu-linux.nix b/pkgs/development/compilers/oraclejdk/jdk8psu-linux.nix
new file mode 100644
index 000000000000..5900e08e19f8
--- /dev/null
+++ b/pkgs/development/compilers/oraclejdk/jdk8psu-linux.nix
@@ -0,0 +1,10 @@
+import ./jdk-linux-base.nix {
+  productVersion = "8";
+  patchVersion = "66";
+  downloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html;
+  sha256_i686 = "18l4r89na4z92djcdgyinjlhl6fmgz4x1sm40lwrsiwzg26nl0i1";
+  sha256_x86_64 = "02nwcgplq14vj1vkz99r5x20lg86hscrxb5aaifwcny7l5gsv5by";
+  jceName = "jce_policy-8.zip";
+  jceDownloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html;
+  sha256JCE = "0n8b6b8qmwb14lllk2lk1q1ahd3za9fnjigz5xn65mpg48whl0pk";
+}
diff --git a/pkgs/development/compilers/ponyc/default.nix b/pkgs/development/compilers/ponyc/default.nix
new file mode 100644
index 000000000000..c94ba203c0ff
--- /dev/null
+++ b/pkgs/development/compilers/ponyc/default.nix
@@ -0,0 +1,47 @@
+{stdenv, glibc, fetchFromGitHub, llvm, makeWrapper, openssl, pcre2 }:
+
+stdenv.mkDerivation {
+  name = "ponyc-0.2.1";
+
+  src = fetchFromGitHub {
+    owner = "CausalityLtd";
+    repo = "ponyc";
+    rev = "0.2.1";
+    sha256 = "1wmvqrj9v2kjqha9fcs10vfnhdxhc3rf67wpn36ldhs1hq0k25jy";
+  };
+
+  buildInputs = [ llvm makeWrapper ];
+
+  makeFlags = [ "config=release" ];
+  doCheck = true;
+  checkTarget = "test";
+
+  patchPhase = ''
+    sed 's|/usr/lib/x86_64-linux-gnu/|${glibc}/lib/|g' -i src/libponyc/codegen/genexe.c
+    sed 's|/lib/x86_64-linux-gnu/|${stdenv.cc.cc}/lib/|g' -i src/libponyc/codegen/genexe.c
+  '';
+
+  preBuild = ''
+      export LLVM_CONFIG=${llvm}/bin/llvm-config
+    '';
+
+  preCheck = ''
+    export LIBRARY_PATH="$out/lib:${openssl}/lib:${pcre2}/lib"
+  '';
+
+  installPhase = ''
+    make config=release prefix=$out install
+    mv $out/bin/ponyc $out/bin/ponyc.wrapped
+    makeWrapper $out/bin/ponyc.wrapped $out/bin/ponyc \
+      --prefix LIBRARY_PATH : "$out/lib" \
+      --prefix LIBRARY_PATH : "${openssl}/lib" \
+      --prefix LIBRARY_PATH : "${pcre2}/lib"
+  '';
+
+  meta = {
+    description = "Pony is an Object-oriented, actor-model, capabilities-secure, high performance programming language";
+    homepage = http://www.ponylang.org;
+    license = stdenv.lib.licenses.bsd2;
+    maintainers = [ stdenv.lib.maintainers.doublec ];
+  };
+}
diff --git a/pkgs/development/compilers/rustc/default.nix b/pkgs/development/compilers/rustc/default.nix
index 00bfb3222e0d..19e746d7dbf3 100644
--- a/pkgs/development/compilers/rustc/default.nix
+++ b/pkgs/development/compilers/rustc/default.nix
@@ -1,10 +1,11 @@
 { stdenv, callPackage }:
 
 callPackage ./generic.nix {
-  shortVersion = "1.3.0";
+  shortVersion = "1.4.0";
   isRelease = true;
+  forceBundledLLVM = false;
   configureFlags = [ "--release-channel=stable" ];
-  srcSha = "14lhk40n9aslz8h8wj7fas5vsgyrb38b2r319q3hlvplgggdksg8";
+  srcSha = "13wpi9nb3h6wwck2mxhza85fahzcwgas00w8m25086v34dha4dp1";
 
   /* Rust is bootstrapped from an earlier built version. We need
   to fetch these earlier versions, which vary per platform.
@@ -14,14 +15,14 @@ callPackage ./generic.nix {
   for the tagged release and not a snapshot in the current HEAD.
   */
 
-  snapshotHashLinux686 = "3459275cdf3896f678e225843fa56f0d9fdbabe8";
-  snapshotHashLinux64 = "e451e3bd6e5fcef71e41ae6f3da9fb1cf0e13a0c";
-  snapshotHashDarwin686 = "428944a7984c0988e77909d82ca2ef77d96a1fbd";
-  snapshotHashDarwin64 = "b0515bb7d2892b9a58282fc865fee11a885406d6";
-  snapshotDate = "2015-07-26";
-  snapshotRev = "a5c12f4";
+  snapshotHashLinux686 = "e2553bf399cd134a08ef3511a0a6ab0d7a667216";
+  snapshotHashLinux64 = "7df8ba9dec63ec77b857066109d4b6250f3d222f";
+  snapshotHashDarwin686 = "29750870c82a0347f8b8b735a4e2e0da26f5098d";
+  snapshotHashDarwin64 = "c9f2c588238b4c6998190c3abeb33fd6164099a2";
+  snapshotDate = "2015-08-11";
+  snapshotRev = "1af31d4";
 
   # cc-ar-opts.patch should be removable in 1.4.0+
-  patches = [ ./patches/remove-uneeded-git.patch ./patches/cc-ar-opts.patch ]
+  patches = [ ./patches/remove-uneeded-git.patch ]
     ++ stdenv.lib.optional stdenv.needsPax ./patches/grsec.patch;
 }
diff --git a/pkgs/development/compilers/rustc/generic.nix b/pkgs/development/compilers/rustc/generic.nix
index ef8c372f2fd6..2b4a7717016d 100644
--- a/pkgs/development/compilers/rustc/generic.nix
+++ b/pkgs/development/compilers/rustc/generic.nix
@@ -2,6 +2,7 @@
 , llvmPackages_37, jemalloc, ncurses, binutils
 
 , shortVersion, isRelease
+, forceBundledLLVM ? false
 , srcSha, srcRev ? ""
 , snapshotHashLinux686, snapshotHashLinux64
 , snapshotHashDarwin686, snapshotHashDarwin64
@@ -76,7 +77,7 @@ let version = if isRelease then
     snapshotName = "rust-stage0-${snapshotDate}-${snapshotRev}-${platform}-${snapshotHash}.tar.bz2";
 in
 
-stdenv.mkDerivation {
+with stdenv.lib; stdenv.mkDerivation {
   inherit name;
   inherit version;
   inherit meta;
@@ -106,7 +107,7 @@ stdenv.mkDerivation {
     installPhase = ''
       mkdir -p "$out"
       cp -r bin "$out/bin"
-    '' + stdenv.lib.optionalString stdenv.isLinux ''
+    '' + optionalString stdenv.isLinux ''
       patchelf --interpreter "${stdenv.glibc.out}/lib/${stdenv.cc.dynamicLinker}" \
                --set-rpath "${stdenv.cc.cc.lib}/lib/:${stdenv.cc.cc.lib}/lib64/" \
                "$out/bin/rustc"
@@ -115,9 +116,10 @@ stdenv.mkDerivation {
 
   configureFlags = configureFlags
                 ++ [ "--enable-local-rust" "--local-rust-root=$snapshot" "--enable-rpath" ]
-                ++ [ "--llvm-root=${llvmPackages_37.llvm}" ] #"--jemalloc-root=${jemalloc}/lib" ]
+                # ++ [ "--jemalloc-root=${jemalloc}/lib"
                 ++ [ "--default-linker=${stdenv.cc}/bin/cc" "--default-ar=${binutils}/bin/ar" ]
-                ++ stdenv.lib.optional (stdenv.cc.cc ? isClang) "--enable-clang";
+                ++ optional (stdenv.cc.cc ? isClang) "--enable-clang"
+                ++ optional (!forceBundledLLVM) "--llvm-root=${llvmPackages_37.llvm}";
 
   inherit patches;
 
@@ -132,7 +134,7 @@ stdenv.mkDerivation {
       --replace "\$\$(subst  /,//," "\$\$(subst /,/,"
 
     # Fix dynamic linking against llvm
-    sed -i 's/, kind = \\"static\\"//g' src/etc/mklldeps.py
+    ${optionalString (!forceBundledLLVM) ''sed -i 's/, kind = \\"static\\"//g' src/etc/mklldeps.py''}
 
     # Fix the configure script to not require curl as we won't use it
     sed -i configure \
@@ -155,8 +157,9 @@ stdenv.mkDerivation {
 
   # Procps is needed for one of the test cases
   nativeBuildInputs = [ file python2 ]
-    ++ stdenv.lib.optionals stdenv.isLinux [ procps ];
-  buildInputs = [ llvmPackages_37.llvm ncurses ];
+    ++ optionals stdenv.isLinux [ procps ];
+  buildInputs = [ ncurses ]
+    ++ optional (!forceBundledLLVM) llvmPackages_37.llvm;
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/development/compilers/rustc/head.nix b/pkgs/development/compilers/rustc/head.nix
index 016d09b3cf1a..dc1bda27d975 100644
--- a/pkgs/development/compilers/rustc/head.nix
+++ b/pkgs/development/compilers/rustc/head.nix
@@ -2,10 +2,11 @@
 { stdenv, callPackage }:
 
 callPackage ./generic.nix {
-  shortVersion = "2015-09-23";
+  shortVersion = "2015-11-01";
   isRelease = false;
-  srcRev = "b2f379cdc23aec5c5d0d62acfcc5a4a18ebf0e30";
-  srcSha = "1z710f5vv9pbis1q96dc6kqvi0j7xgg95r5f5c3czbvndrxjwm03";
+  forceBundledLLVM = true;
+  srcRev = "1a2eaffb6";
+  srcSha = "17b8zgz8j5dmz489b4zs2q4igc9x2v4isgqg3i5nzhacghxjqfyy";
 
   /* Rust is bootstrapped from an earlier built version. We need
   to fetch these earlier versions, which vary per platform.
diff --git a/pkgs/development/compilers/rustc/patches/cc-ar-opts.patch b/pkgs/development/compilers/rustc/patches/cc-ar-opts.patch
deleted file mode 100644
index e73d54de8f59..000000000000
--- a/pkgs/development/compilers/rustc/patches/cc-ar-opts.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From c97759699264c6b1fa0e88420cd3c720df25e594 Mon Sep 17 00:00:00 2001
-From: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
-Date: Tue, 11 Aug 2015 01:09:21 +0200
-Subject: [PATCH] rustc_back: add configure options for default linker and ar
-
-Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
----
- configure                       | 4 ++++
- mk/target.mk                    | 4 ++++
- src/librustc_back/target/mod.rs | 4 ++--
- 3 files changed, 10 insertions(+), 2 deletions(-)
-
-diff --git a/configure b/configure
-index 071788c..dc9d7d7 100755
---- a/configure
-+++ b/configure
-@@ -607,6 +607,10 @@ valopt aarch64-linux-android-ndk "" "aarch64-linux-android NDK standalone path"
- valopt release-channel "dev" "the name of the release channel to build"
- valopt musl-root "/usr/local" "MUSL root installation directory"
- 
-+# Used on systems where "cc" and "ar" are unavailable
-+valopt default-linker "cc" "the default linker"
-+valopt default-ar     "ar" "the default ar"
-+
- # Many of these are saved below during the "writing configuration" step
- # (others are conditionally saved).
- opt_nosave manage-submodules 1 "let the build manage the git submodules"
-diff --git a/mk/target.mk b/mk/target.mk
-index aae66c4..408ab96 100644
---- a/mk/target.mk
-+++ b/mk/target.mk
-@@ -13,6 +13,10 @@
- # this exists can be found on issue #2400
- export CFG_COMPILER_HOST_TRIPLE
- 
-+# Used as defaults for the runtime ar and cc tools
-+export CFG_DEFAULT_LINKER
-+export CFG_DEFAULT_AR
-+
- # The standard libraries should be held up to a higher standard than any old
- # code, make sure that these common warnings are denied by default. These can
- # be overridden during development temporarily. For stage0, we allow warnings
-diff --git a/src/librustc_back/target/mod.rs b/src/librustc_back/target/mod.rs
-index d9cfdaa..542791a 100644
---- a/src/librustc_back/target/mod.rs
-+++ b/src/librustc_back/target/mod.rs
-@@ -185,8 +185,8 @@ impl Default for TargetOptions {
-     fn default() -> TargetOptions {
-         TargetOptions {
-             data_layout: String::new(),
--            linker: "cc".to_string(),
--            ar: "ar".to_string(),
-+            linker: option_env!("CFG_DEFAULT_LINKER").unwrap_or("cc").to_string(),
-+            ar: option_env!("CFG_DEFAULT_AR").unwrap_or("ar").to_string(),
-             pre_link_args: Vec::new(),
-             post_link_args: Vec::new(),
-             cpu: "generic".to_string(),
diff --git a/pkgs/development/compilers/sbcl/1.2.0.nix b/pkgs/development/compilers/sbcl/1.2.0.nix
index d19edce2c105..975cb7db1bbf 100644
--- a/pkgs/development/compilers/sbcl/1.2.0.nix
+++ b/pkgs/development/compilers/sbcl/1.2.0.nix
@@ -66,7 +66,7 @@ stdenv.mkDerivation rec {
       sh make.sh clisp --prefix=$out
     ''
     else ''
-      sh make.sh --prefix=$out --xc-host='${sbclBootstrap}/bin/sbcl --core ${sbclBootstrap}/share/sbcl/sbcl.core --disable-debugger --no-userinit --no-sysinit'
+      sh make.sh --prefix=$out --xc-host='${sbclBootstrap}/bin/sbcl --disable-debugger --no-userinit --no-sysinit'
     '';
 
   installPhase = ''
diff --git a/pkgs/development/compilers/sbcl/1.2.5.nix b/pkgs/development/compilers/sbcl/1.2.5.nix
index 6c0fa874f3eb..68ed58b426f6 100644
--- a/pkgs/development/compilers/sbcl/1.2.5.nix
+++ b/pkgs/development/compilers/sbcl/1.2.5.nix
@@ -66,7 +66,7 @@ stdenv.mkDerivation rec {
       sh make.sh clisp --prefix=$out
     ''
     else ''
-      sh make.sh --prefix=$out --xc-host='${sbclBootstrap}/bin/sbcl --core ${sbclBootstrap}/share/sbcl/sbcl.core --disable-debugger --no-userinit --no-sysinit'
+      sh make.sh --prefix=$out --xc-host='${sbclBootstrap}/bin/sbcl --disable-debugger --no-userinit --no-sysinit'
     '';
 
   installPhase = ''
diff --git a/pkgs/development/compilers/sbcl/bootstrap.nix b/pkgs/development/compilers/sbcl/bootstrap.nix
index ddbef4e8b997..43002aa72f57 100644
--- a/pkgs/development/compilers/sbcl/bootstrap.nix
+++ b/pkgs/development/compilers/sbcl/bootstrap.nix
@@ -40,7 +40,6 @@ stdenv.mkDerivation rec {
   installPhase = ''
     mkdir -p $out/bin
     cp -p src/runtime/sbcl $out/bin
-    install_name_tool -change /usr/lib/libgcc_s.1.dylib ${stdenv.libc}/lib/libgcc_s.10.5.dylib $out/bin/sbcl
 
     mkdir -p $out/share/sbcl
     cp -p src/runtime/sbcl $out/share/sbcl
@@ -50,7 +49,7 @@ stdenv.mkDerivation rec {
       --add-flags "--core $out/share/sbcl/sbcl.core"
   '';
 
-  postFixup = stdenv.lib.optionalString (!stdenv.isArm) ''
+  postFixup = stdenv.lib.optionalString (!stdenv.isArm && stdenv.isLinux) ''
     patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) $out/share/sbcl/sbcl
   '';
 
diff --git a/pkgs/development/compilers/sbcl/default.nix b/pkgs/development/compilers/sbcl/default.nix
index 661279db1a90..c464d9856fc3 100644
--- a/pkgs/development/compilers/sbcl/default.nix
+++ b/pkgs/development/compilers/sbcl/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name    = "sbcl-${version}";
-  version = "1.2.15";
+  version = "1.3.0";
 
   src = fetchurl {
     url    = "mirror://sourceforge/project/sbcl/sbcl/${version}/${name}-source.tar.bz2";
-    sha256 = "0l8nrf5qnr8c9hr6bn1kd86mnr2s37b493azh9rrk3v59f56wnnr";
+    sha256 = "1cwrmvbx8m7n7wkcm16yz7qwx221giz7jskzkvy42pj919may36n";
   };
 
   buildInputs = [ which ];
@@ -65,7 +65,7 @@ stdenv.mkDerivation rec {
   '';
 
   buildPhase = ''
-    sh make.sh --prefix=$out --xc-host="${sbclBootstrapHost}"
+    sh make.sh --prefix=$out --xc-host="${sbclBootstrapHost} --disable-debugger --no-userinit --no-sysinit"
   '';
 
   installPhase = ''
diff --git a/pkgs/development/compilers/smlnj/default.nix b/pkgs/development/compilers/smlnj/default.nix
index e4d4dc1ae10c..7f8580f058b6 100644
--- a/pkgs/development/compilers/smlnj/default.nix
+++ b/pkgs/development/compilers/smlnj/default.nix
@@ -1,30 +1,31 @@
 { stdenv, fetchurl, darwin }:
 let
-  version = "110.78";
+  version = "110.79";
   baseurl = "http://smlnj.cs.uchicago.edu/dist/working/${version}";
 
   sources = map fetchurl [
-    { url = "${baseurl}/config.tgz";              sha256 = "018c6iflpm3im6679via1wshw2sls4jgiqrc30pqkb80kfrh1pg2"; }
-    { url = "${baseurl}/cm.tgz";                  sha256 = "0id37j6lj4b3qczn4949gvc8hys9j3h7nk9kc9fxv4rv1g7i328x"; }
-    { url = "${baseurl}/compiler.tgz";            sha256 = "1m299lzc8l9mixb2l9scvilz27v16db3igzwca19alsrvldnmpg2"; }
-    { url = "${baseurl}/runtime.tgz";             sha256 = "1pwbv1bnh8dz4w62cx19c56z4y57krbpr1ziayyycg7lj44pb7sy"; }
-    { url = "${baseurl}/system.tgz";              sha256 = "1jdilm3wcjxcnnbd3g8rcd1f5nsb5ffzfjqcsdcpqd9mnx81fca9"; }
-    { url = "${baseurl}/MLRISC.tgz";              sha256 = "0ibqwkkqd4c62p3q1jbgqyh7k78sms01igl7ibk6jyrhy9n7vw0v"; }
-    { url = "${baseurl}/smlnj-lib.tgz";           sha256 = "1lxnwp8q3xw0wqqrv3hlk3fjancrfz862fy9j504s38ljhdjc3jr"; }
-    { url = "${baseurl}/ckit.tgz";                sha256 = "1nqw40vjxy40ckif5d480g5mf7b91lmwcs7m689gs9n2dj3gbwnp"; }
-    { url = "${baseurl}/nlffi.tgz";               sha256 = "1cks1xifb32wya2flw7h7cvcdnkxv7ngk8y7xv29888r7xbdr3h0"; }
-    { url = "${baseurl}/cml.tgz";                 sha256 = "0qfaj6vsagsnh9di94cxvn77f91zfwsnn95rz8ig5dz5zmq77ghz"; }
-    { url = "${baseurl}/eXene.tgz";               sha256 = "1nlkb2y48m702qplxkqphvb9nbj433300j7yrdbsj39j6vvp8pmw"; }
-    { url = "${baseurl}/ml-lpt.tgz";              sha256 = "02b2gdl1qdwilhls3ssa04wcyg3aswndn1bh85008rqj85ppddiq"; }
-    { url = "${baseurl}/ml-lex.tgz";              sha256 = "0l1sddd5wfpqgmyw1g3iwv2p27fbkpjkm10db2qd2pid9r95dxz5"; }
-    { url = "${baseurl}/ml-yacc.tgz";             sha256 = "0ln790ydb43sxbjjymbd6jnnzfygrc0lr50k81p5cazzzy1yfim6"; }
-    { url = "${baseurl}/ml-burg.tgz";             sha256 = "03anyy2gdkgfprmahx489hxg9zjh9lydq3gkzrlyw51yzvgp3f92"; }
-    { url = "${baseurl}/pgraph.tgz";              sha256 = "19hbcav11a6fv0xmzgin0v5dl4m08msk1vsmw26kpqiqkvkh7j39"; }
-    { url = "${baseurl}/trace-debug-profile.tgz"; sha256 = "0awssg3vgj3sp85kdfjcp28zaq815zr55k9z6v79zs9gll02ghlk"; }
-    { url = "${baseurl}/heap2asm.tgz";            sha256 = "1vkmxbm6x37l1wqvilvvw662pdvg6mkbvcfvya8ggsihz4c1z0jg"; }
-    { url = "${baseurl}/smlnj-c.tgz";             sha256 = "08b8acd5vwhz1gg7960rha00qhwk7l7p01vvgwzmdiqlcd3fcj1d"; }
-    { url = "${baseurl}/doc.tgz";                 sha256 = "1pbsvc8nmnjwq239wrylb209drr4xv9a66r0fjm126b6nw1slrbq"; }
-    { url = "${baseurl}/boot.x86-unix.tgz";       sha256 = "19wd273k4ldnxndq6cqr7xv387ynbviz6jlgxmlld7nxf549kn5a"; }
+    { url = "${baseurl}/config.tgz";              sha256 = "1siahy5sxz20bdy88s7zjj6gn55np1h54dalmg0nwzqq1rc048xb"; }
+    { url = "${baseurl}/cm.tgz";                  sha256 = "174g71hvk1wfdmrg1mbx3p5j04ywnbbjapnnr9sgjd99pqqqsmdz"; }
+    { url = "${baseurl}/compiler.tgz";            sha256 = "001wi97ghj3mym4bk73gzzzrh7584hd79jn08cnq1wssdcfpn4mw"; }
+    { url = "${baseurl}/runtime.tgz";             sha256 = "0lavdzg25nbdzdyyf6wm304k0gsbb5bng2nlcx8gcfl743vl13r0"; }
+    { url = "${baseurl}/system.tgz";              sha256 = "00j34m5n8m30p51kajd0sxamy7gpwxaxrlgw5agxh0wi83vqfaki"; }
+    { url = "${baseurl}/MLRISC.tgz";              sha256 = "19q3gp7yfby4n8z6jn9m9q8g0a9kvb13arj8f2j0x9jnh3y2is78"; }
+    { url = "${baseurl}/smlnj-lib.tgz";           sha256 = "0frkc23zh9h1c2lvkidh92lsp56liyb3hyv17503nchmkxrlsi09"; }
+    { url = "${baseurl}/old-basis.tgz";           sha256 = "1ka7w4nvkmaf86dkdzgbwiw8kay6gxhcyx4q17m33wdzsjbq56lh"; }
+    { url = "${baseurl}/ckit.tgz";                sha256 = "1z8xf5pqwayqd8j6xhfhqs4axkb4dx7vdqi2a7gq3zbx2fd3s7pw"; }
+    { url = "${baseurl}/nlffi.tgz";               sha256 = "1544m7ildyd0d60wfy2hl700jnslpxqb7brgh8p0bmkvhhvvc96v"; }
+    { url = "${baseurl}/cml.tgz";                 sha256 = "11blq65zlsbh6iwq502jww1z4iyk9pf2iv3d437cgnpb3sn9mx72"; }
+    { url = "${baseurl}/eXene.tgz";               sha256 = "14yl8a5xwms1m9bvfwfiz6rhg49225l52lqqq9sbxbf57615n9yg"; }
+    { url = "${baseurl}/ml-lpt.tgz";              sha256 = "118s7v2f73ym91ymvnmswjxm2pw5n4q1d4hvbs1cmm43dv28pw7m"; }
+    { url = "${baseurl}/ml-lex.tgz";              sha256 = "0lf5ir12v8j6n11mblrl00jgm583ak077vgbabc1dfmz47rd566b"; }
+    { url = "${baseurl}/ml-yacc.tgz";             sha256 = "0dmifbbq1wxkxf479jv61nsy79sr78ad9fq6561rvgi4h12lzh7k"; }
+    { url = "${baseurl}/ml-burg.tgz";             sha256 = "1b5z18azik1kpaafi1vjgaf181yv32h88zm3z5fqxs96pwb86h1d"; }
+    { url = "${baseurl}/pgraph.tgz";              sha256 = "15g06hl7zn98qas3b6r6lrl75g9d1galqxdyai7d5z9q5lq71j2v"; }
+    { url = "${baseurl}/trace-debug-profile.tgz"; sha256 = "0jwilcv2ycfpcy3cgs8ndaj16yqm8m2q63sipcigfycacpyqfsiw"; }
+    { url = "${baseurl}/heap2asm.tgz";            sha256 = "0wylsw1dkls9l86j226ilfb50mfk4h4zz4r9zdj104a1mqvvbgfk"; }
+    { url = "${baseurl}/smlnj-c.tgz";             sha256 = "1xr89r1nhzg53hk0v0fk1livphwpgmzh1dgjqxl4w8dx9qhk9yf0"; }
+    { url = "${baseurl}/doc.tgz";                 sha256 = "1fz4l3019n1rkrww98w59cdhlrz9jg635hmdq59xryc0j78y4ga1"; }
+    { url = "${baseurl}/boot.x86-unix.tgz";       sha256 = "0nka4dhklhilrsw4byr5vixiap28zp67ai0vjkwhqh03amkcr8zq"; }
   ];
 in stdenv.mkDerivation {
   name = "smlnj-${version}";
diff --git a/pkgs/development/compilers/uhc/default.nix b/pkgs/development/compilers/uhc/default.nix
index 017dcfb3e126..1ed31422d531 100644
--- a/pkgs/development/compilers/uhc/default.nix
+++ b/pkgs/development/compilers/uhc/default.nix
@@ -1,18 +1,18 @@
 { stdenv, coreutils, fetchgit, m4, libtool, clang, ghcWithPackages }:
 
-let wrappedGhc = ghcWithPackages (hpkgs: with hpkgs; [shuffle hashable mtl network uhc-util uulib] );
+let wrappedGhc = ghcWithPackages (hpkgs: with hpkgs; [fgl vector syb uulib network binary hashable uhc-util mtl transformers directory containers array process filepath shuffle uuagc] );
 in stdenv.mkDerivation rec {
   # Important:
   # The commits "Fixate/tag v..." are the released versions.
   # Ignore the "bumped version to ...." commits, they do not
   # correspond to releases.
-  version = "1.1.9.1.20150611";
+  version = "1.1.9.2";
   name = "uhc-${version}";
 
   src = fetchgit {
     url = "https://github.com/UU-ComputerScience/uhc.git";
-    rev = "b80098e07d12900f098ea964b1d2b3f38e5c9900";
-    sha256 = "14qg1fd9pgbczcmn5ggkd9674qadx1izmz8363ps7c207dg94f9x";
+    rev = "292d259113b98c32154a5be336875751caa5edbc";
+    sha256 = "1f462xq9ilkp9mnxm8hxhh1cdwps5d0hxysyibxryk32l7hh53cz";
   };
 
   postUnpack = "sourceRoot=\${sourceRoot}/EHC";
@@ -50,6 +50,6 @@ in stdenv.mkDerivation rec {
     # On Darwin, the GNU libtool is used, which does not
     # support the -static flag and thus breaks the build.
     platforms = ["x86_64-linux"];
-    broken = true; # https://github.com/UU-ComputerScience/uhc/issues/60
+
   };
 }
diff --git a/pkgs/development/compilers/urweb/default.nix b/pkgs/development/compilers/urweb/default.nix
index e34d58efd010..c53cddc0ad1a 100644
--- a/pkgs/development/compilers/urweb/default.nix
+++ b/pkgs/development/compilers/urweb/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   name = "urweb-${version}";
-  version = "20150819";
+  version = "20151018";
 
   src = fetchurl {
     url = "http://www.impredicative.com/ur/${name}.tgz";
-    sha256 = "0gpdlq3aazx121k3ia94qfa4dyv04q7478x2p6hvcjamn18vk56n";
+    sha256 = "08p52p5m1xl2gzdchnayky44mm2b0x8hv0f00iviyyv1gnx3lpy0";
   };
 
   buildInputs = [ openssl mlton mysql postgresql sqlite ];