shithub: mc

Download patch

ref: 0a94564dff79963ff86d426065158ffe40479c06
parent: 35ac808f091891eea09ceb058d6d88ccde4feffb
author: bitmapper <bitmapper85@gmail.com>
date: Wed Oct 30 09:56:35 EDT 2019

fixed macos build, "improved" vim syntax highlighting (improved mode off by default)

--- a/configure
+++ b/configure
@@ -56,18 +56,15 @@
     *Darwin*)
 	symprefix='"_"'
 	defaultasm=Gnugasmacho
-	sysinit='setenv("MACOSX_DEPLOYMENT_TARGET", "10.6", 0)'
         echo 'export SYS=osx' >> config.mk
         echo export INST_MAN=$prefix/share/man/man >> config.mk
-        echo export MACOSX_DEPLOYMENT_TARGET=10.6 >> config.mk
         echo 'const Sys = "OSX"' >> mbld/config.myr
         echo 'const Linkcmd = ["ld", ' \
-            '"-pagezero_size", "0x100000000",' \
-            '"-macosx_version_min", "10.6",'\
+            '"-static", "-pagezero_size", "0x100000000", "-no_pie",' \
             ']' >> mbld/config.myr
         echo "const Manpath = \"share/man/man\"" >> mbld/config.myr
         echo 'const Dlflags : byte[:][:] = [][:]' >> mbld/config.myr
-	env='[("MACOSX_DEPLOYMENT_TARGET", "10.6")][:]'
+	env='[][:]'
         ;;
     *FreeBSD*)
         echo 'export SYS=freebsd' >> config.mk
diff -u a/mbld/deps.myr b/mbld/deps.myr
--- a/mbld/deps.myr
+++ b/mbld/deps.myr
@@ -471,11 +471,13 @@
 	;;
 
 	/* OSX warns if we don't add a version */
+        /* OSX now hates this, and the breaks everything */
+        /*
 	if std.eq(opt_sys, "osx")
 		std.slpush(&n.cmd, std.sldup("-macosx_version_min"))
 		std.slpush(&n.cmd, std.sldup("10.6"))
 	;;
-
+        */
 }
 
 const myrcmd = {b, n, mt, src, istest
--- a/mbld/deps.myr
+++ b/mbld/deps.myr
@@ -471,11 +471,13 @@
 	;;
 
 	/* OSX warns if we don't add a version */
+        /* OSX now hates this, and the breaks everything */
+        /*
 	if std.eq(opt_sys, "osx")
 		std.slpush(&n.cmd, std.sldup("-macosx_version_min"))
 		std.slpush(&n.cmd, std.sldup("10.6"))
 	;;
-
+        */
 }
 
 const myrcmd = {b, n, mt, src, istest
diff -u a/mk/bootstrap/bootstrap+Darwin-x86_64.sh b/mk/bootstrap/bootstrap+Darwin-x86_64.sh
--- a/mk/bootstrap/bootstrap+Darwin-x86_64.sh
+++ b/mk/bootstrap/bootstrap+Darwin-x86_64.sh
@@ -128,8 +128,8 @@
 	$pwd/6/6m -O obj -I obj/lib/sys lib/std/dial+posixy.myr
 	$pwd/6/6m -O obj -I obj/lib/sys lib/std/listen+posixy.myr
 	$pwd/6/6m -O obj -I obj/lib/sys lib/std/try.myr
-	ar -rcs obj/lib/std/libstd.a obj/lib/std/resolve.o obj/lib/std/result.o obj/lib/std/try.o obj/lib/std/ipparse.o obj/lib/std/alloc.o obj/lib/std/sleq.o obj/lib/std/putint.o obj/lib/std/sljoin.o obj/lib/std/slpop.o obj/lib/std/syswrap.o obj/lib/std/getint.o obj/lib/std/strsplit.o obj/lib/std/slfill.o obj/lib/std/writeall.o obj/lib/std/fltfmt.o obj/lib/std/hasprefix.o obj/lib/std/swap.o obj/lib/std/fmt.o obj/lib/std/netaddr.o obj/lib/std/varargs.o obj/lib/std/diriter.o obj/lib/std/getcwd.o obj/lib/std/blat.o obj/lib/std/optparse.o obj/lib/std/pathjoin.o obj/lib/std/readall.o obj/lib/std/strjoin.o obj/lib/std/threadhooks.o obj/lib/std/sjlj.o obj/lib/std/extremum.o obj/lib/std/endian.o obj/lib/std/rand.o obj/lib/std/sldup.o obj/lib/std/sleep.o obj/lib/std/wait.o obj/lib/std/introspect.o obj/lib/std/fltparse.o obj/lib/std/fndup.o obj/lib/std/strbuf.o obj/lib/std/strreplace.o obj/lib/std/assert.o obj/lib/std/spork.o obj/lib/std/slpush.o obj/lib/std/strstrip.o obj/lib/std/htab.o obj/lib/std/hashfuncs.o obj/lib/std/slput.o obj/lib/std/sjlj-impl.o obj/lib/std/fltbits.o obj/lib/std/striter.o obj/lib/std/types.o obj/lib/std/cstrconv.o obj/lib/std/units.o obj/lib/std/backtrace.o obj/lib/std/syswrap-ss.o obj/lib/std/die.o obj/lib/std/mk.o obj/lib/std/hassuffix.o obj/lib/std/memops-impl.o obj/lib/std/pledge.o obj/lib/std/utf.o obj/lib/std/slurp.o obj/lib/std/dialparse.o obj/lib/std/bytealloc.o obj/lib/std/mktemp.o obj/lib/std/consts.o obj/lib/std/chomp.o obj/lib/std/dir.o obj/lib/std/search.o obj/lib/std/memops.o obj/lib/std/fmtfuncs.o obj/lib/std/strfind.o obj/lib/std/env.o obj/lib/std/dirname.o obj/lib/std/clear.o obj/lib/std/listen.o obj/lib/std/sort.o obj/lib/std/cmp.o obj/lib/std/now.o obj/lib/std/intparse.o obj/lib/std/traits.o obj/lib/std/mkpath.o obj/lib/std/option.o obj/lib/std/dial.o obj/lib/std/errno.o obj/lib/std/chartype.o obj/lib/std/bigint.o obj/lib/std/bitset.o obj/lib/std/getbp.o obj/lib/std/slcp.o obj/lib/std/execvp.o
-	$pwd/muse/muse -o obj/lib/std/libstd.use -p std obj/lib/std/resolve.use obj/lib/std/result.use obj/lib/std/try.use obj/lib/std/ipparse.use obj/lib/std/alloc.use obj/lib/std/sleq.use obj/lib/std/putint.use obj/lib/std/sljoin.use obj/lib/std/slpop.use obj/lib/std/syswrap.use obj/lib/std/getint.use obj/lib/std/strsplit.use obj/lib/std/slfill.use obj/lib/std/writeall.use obj/lib/std/fltfmt.use obj/lib/std/hasprefix.use obj/lib/std/swap.use obj/lib/std/fmt.use obj/lib/std/netaddr.use obj/lib/std/varargs.use obj/lib/std/diriter.use obj/lib/std/getcwd.use obj/lib/std/blat.use obj/lib/std/optparse.use obj/lib/std/pathjoin.use obj/lib/std/readall.use obj/lib/std/strjoin.use obj/lib/std/threadhooks.use obj/lib/std/sjlj.use obj/lib/std/extremum.use obj/lib/std/endian.use obj/lib/std/rand.use obj/lib/std/sldup.use obj/lib/std/sleep.use obj/lib/std/wait.use obj/lib/std/introspect.use obj/lib/std/fltparse.use obj/lib/std/fndup.use obj/lib/std/strbuf.use obj/lib/std/strreplace.use obj/lib/std/assert.use obj/lib/std/spork.use obj/lib/std/slpush.use obj/lib/std/strstrip.use obj/lib/std/htab.use obj/lib/std/hashfuncs.use obj/lib/std/slput.use obj/lib/std/fltbits.use obj/lib/std/striter.use obj/lib/std/types.use obj/lib/std/cstrconv.use obj/lib/std/units.use obj/lib/std/backtrace.use obj/lib/std/syswrap-ss.use obj/lib/std/die.use obj/lib/std/mk.use obj/lib/std/hassuffix.use obj/lib/std/pledge.use obj/lib/std/utf.use obj/lib/std/slurp.use obj/lib/std/dialparse.use obj/lib/std/bytealloc.use obj/lib/std/mktemp.use obj/lib/std/consts.use obj/lib/std/chomp.use obj/lib/std/dir.use obj/lib/std/search.use obj/lib/std/memops.use obj/lib/std/fmtfuncs.use obj/lib/std/strfind.use obj/lib/std/env.use obj/lib/std/dirname.use obj/lib/std/clear.use obj/lib/std/listen.use obj/lib/std/sort.use obj/lib/std/cmp.use obj/lib/std/now.use obj/lib/std/intparse.use obj/lib/std/traits.use obj/lib/std/mkpath.use obj/lib/std/option.use obj/lib/std/dial.use obj/lib/std/errno.use obj/lib/std/chartype.use obj/lib/std/bigint.use obj/lib/std/bitset.use obj/lib/std/slcp.use obj/lib/std/execvp.use
+	ar -rcs obj/lib/std/libstd.a obj/lib/std/resolve.o obj/lib/std/result.o obj/lib/std/try.o obj/lib/std/ipparse.o obj/lib/std/alloc.o obj/lib/std/sleq.o obj/lib/std/putint.o obj/lib/std/sljoin.o obj/lib/std/slpop.o obj/lib/std/syswrap.o obj/lib/std/getint.o obj/lib/std/strsplit.o obj/lib/std/slfill.o obj/lib/std/writeall.o obj/lib/std/fltfmt.o obj/lib/std/hasprefix.o obj/lib/std/swap.o obj/lib/std/intfmt.o obj/lib/std/fmt.o obj/lib/std/netaddr.o obj/lib/std/varargs.o obj/lib/std/diriter.o obj/lib/std/getcwd.o obj/lib/std/blat.o obj/lib/std/optparse.o obj/lib/std/pathjoin.o obj/lib/std/readall.o obj/lib/std/strjoin.o obj/lib/std/threadhooks.o obj/lib/std/sjlj.o obj/lib/std/extremum.o obj/lib/std/endian.o obj/lib/std/rand.o obj/lib/std/sldup.o obj/lib/std/sleep.o obj/lib/std/wait.o obj/lib/std/introspect.o obj/lib/std/fltparse.o obj/lib/std/fndup.o obj/lib/std/strbuf.o obj/lib/std/strreplace.o obj/lib/std/assert.o obj/lib/std/spork.o obj/lib/std/slpush.o obj/lib/std/strstrip.o obj/lib/std/htab.o obj/lib/std/hashfuncs.o obj/lib/std/slput.o obj/lib/std/sjlj-impl.o obj/lib/std/fltbits.o obj/lib/std/striter.o obj/lib/std/types.o obj/lib/std/cstrconv.o obj/lib/std/units.o obj/lib/std/backtrace.o obj/lib/std/syswrap-ss.o obj/lib/std/die.o obj/lib/std/mk.o obj/lib/std/hassuffix.o obj/lib/std/memops-impl.o obj/lib/std/pledge.o obj/lib/std/utf.o obj/lib/std/slurp.o obj/lib/std/dialparse.o obj/lib/std/bytealloc.o obj/lib/std/mktemp.o obj/lib/std/consts.o obj/lib/std/chomp.o obj/lib/std/dir.o obj/lib/std/search.o obj/lib/std/memops.o obj/lib/std/fmtfuncs.o obj/lib/std/strfind.o obj/lib/std/env.o obj/lib/std/dirname.o obj/lib/std/clear.o obj/lib/std/listen.o obj/lib/std/sort.o obj/lib/std/cmp.o obj/lib/std/now.o obj/lib/std/intparse.o obj/lib/std/traits.o obj/lib/std/mkpath.o obj/lib/std/option.o obj/lib/std/dial.o obj/lib/std/errno.o obj/lib/std/chartype.o obj/lib/std/bigint.o obj/lib/std/bitset.o obj/lib/std/getbp.o obj/lib/std/slcp.o obj/lib/std/execvp.o
+	$pwd/muse/muse -o obj/lib/std/libstd.use -p std obj/lib/std/resolve.use obj/lib/std/result.use obj/lib/std/try.use obj/lib/std/ipparse.use obj/lib/std/alloc.use obj/lib/std/sleq.use obj/lib/std/putint.use obj/lib/std/sljoin.use obj/lib/std/slpop.use obj/lib/std/syswrap.use obj/lib/std/getint.use obj/lib/std/strsplit.use obj/lib/std/slfill.use obj/lib/std/writeall.use obj/lib/std/fltfmt.use obj/lib/std/hasprefix.use obj/lib/std/swap.use obj/lib/std/intfmt.use obj/lib/std/fmt.use obj/lib/std/netaddr.use obj/lib/std/varargs.use obj/lib/std/diriter.use obj/lib/std/getcwd.use obj/lib/std/blat.use obj/lib/std/optparse.use obj/lib/std/pathjoin.use obj/lib/std/readall.use obj/lib/std/strjoin.use obj/lib/std/threadhooks.use obj/lib/std/sjlj.use obj/lib/std/extremum.use obj/lib/std/endian.use obj/lib/std/rand.use obj/lib/std/sldup.use obj/lib/std/sleep.use obj/lib/std/wait.use obj/lib/std/introspect.use obj/lib/std/fltparse.use obj/lib/std/fndup.use obj/lib/std/strbuf.use obj/lib/std/strreplace.use obj/lib/std/assert.use obj/lib/std/spork.use obj/lib/std/slpush.use obj/lib/std/strstrip.use obj/lib/std/htab.use obj/lib/std/hashfuncs.use obj/lib/std/slput.use obj/lib/std/fltbits.use obj/lib/std/striter.use obj/lib/std/types.use obj/lib/std/cstrconv.use obj/lib/std/units.use obj/lib/std/backtrace.use obj/lib/std/syswrap-ss.use obj/lib/std/die.use obj/lib/std/mk.use obj/lib/std/hassuffix.use obj/lib/std/pledge.use obj/lib/std/utf.use obj/lib/std/slurp.use obj/lib/std/dialparse.use obj/lib/std/bytealloc.use obj/lib/std/mktemp.use obj/lib/std/consts.use obj/lib/std/chomp.use obj/lib/std/dir.use obj/lib/std/search.use obj/lib/std/memops.use obj/lib/std/fmtfuncs.use obj/lib/std/strfind.use obj/lib/std/env.use obj/lib/std/dirname.use obj/lib/std/clear.use obj/lib/std/listen.use obj/lib/std/sort.use obj/lib/std/cmp.use obj/lib/std/now.use obj/lib/std/intparse.use obj/lib/std/traits.use obj/lib/std/mkpath.use obj/lib/std/option.use obj/lib/std/dial.use obj/lib/std/errno.use obj/lib/std/chartype.use obj/lib/std/bigint.use obj/lib/std/bitset.use obj/lib/std/slcp.use obj/lib/std/execvp.use
 	$pwd/6/6m -O obj -I obj/lib/sys -I obj/lib/std -I obj/lib/bio -I obj/lib/regex -I obj/lib/thread mbld/types.myr
 	$pwd/6/6m -O obj -I obj/lib/sys -I obj/lib/std lib/regex/types.myr
 	$pwd/6/6m -O obj -I obj/lib/sys -I obj/lib/std lib/regex/interp.myr
@@ -173,5 +173,5 @@
 	$pwd/6/6m -O obj -I obj/lib/sys -I obj/lib/std -I obj/lib/bio -I obj/lib/regex -I obj/lib/thread mbld/test.myr
 	$pwd/6/6m -O obj -I obj/lib/sys -I obj/lib/std -I obj/lib/bio -I obj/lib/regex -I obj/lib/thread mbld/deps.myr
 	$pwd/6/6m -O obj -I obj/lib/sys -I obj/lib/std -I obj/lib/bio -I obj/lib/regex -I obj/lib/thread mbld/main.myr
-	ld -pagezero_size 0x100000000 -macosx_version_min 10.6 -o obj/mbld/mbld $pwd/rt/_myrrt.o obj/mbld/deps.o obj/mbld/main.o obj/mbld/util.o obj/mbld/cpufeatures.o obj/mbld/libs.o obj/mbld/syssel.o obj/mbld/config.o obj/mbld/opts.o obj/mbld/subtest.o obj/mbld/types.o obj/mbld/test.o obj/mbld/install.o obj/mbld/parse.o obj/mbld/build.o -Lobj/lib/thread -lthread -Lobj/lib/bio -lbio -Lobj/lib/regex -lregex -Lobj/lib/std -lstd -Lobj/lib/sys -lsys -macosx_version_min 10.6
+	ld -static -no_pie -pagezero_size 0x100000000 -o obj/mbld/mbld $pwd/rt/_myrrt.o obj/mbld/deps.o obj/mbld/main.o obj/mbld/util.o obj/mbld/cpufeatures.o obj/mbld/libs.o obj/mbld/syssel.o obj/mbld/config.o obj/mbld/opts.o obj/mbld/subtest.o obj/mbld/types.o obj/mbld/test.o obj/mbld/install.o obj/mbld/parse.o obj/mbld/build.o -Lobj/lib/thread -lthread -Lobj/lib/bio -lbio -Lobj/lib/regex -lregex -Lobj/lib/std -lstd -Lobj/lib/sys -lsys
 true
diff -u a/mk/bootstrap/bootstrap+Darwin-x86_64.sh b/mk/bootstrap/bootstrap+Darwin-x86_64.sh
--- a/mk/bootstrap/bootstrap+Darwin-x86_64.sh
+++ b/mk/bootstrap/bootstrap+Darwin-x86_64.sh
@@ -128,8 +128,8 @@
 	$pwd/6/6m -O obj -I obj/lib/sys lib/std/dial+posixy.myr
 	$pwd/6/6m -O obj -I obj/lib/sys lib/std/listen+posixy.myr
 	$pwd/6/6m -O obj -I obj/lib/sys lib/std/try.myr
-	ar -rcs obj/lib/std/libstd.a obj/lib/std/resolve.o obj/lib/std/result.o obj/lib/std/try.o obj/lib/std/ipparse.o obj/lib/std/alloc.o obj/lib/std/sleq.o obj/lib/std/putint.o obj/lib/std/sljoin.o obj/lib/std/slpop.o obj/lib/std/syswrap.o obj/lib/std/getint.o obj/lib/std/strsplit.o obj/lib/std/slfill.o obj/lib/std/writeall.o obj/lib/std/fltfmt.o obj/lib/std/hasprefix.o obj/lib/std/swap.o obj/lib/std/fmt.o obj/lib/std/netaddr.o obj/lib/std/varargs.o obj/lib/std/diriter.o obj/lib/std/getcwd.o obj/lib/std/blat.o obj/lib/std/optparse.o obj/lib/std/pathjoin.o obj/lib/std/readall.o obj/lib/std/strjoin.o obj/lib/std/threadhooks.o obj/lib/std/sjlj.o obj/lib/std/extremum.o obj/lib/std/endian.o obj/lib/std/rand.o obj/lib/std/sldup.o obj/lib/std/sleep.o obj/lib/std/wait.o obj/lib/std/introspect.o obj/lib/std/fltparse.o obj/lib/std/fndup.o obj/lib/std/strbuf.o obj/lib/std/strreplace.o obj/lib/std/assert.o obj/lib/std/spork.o obj/lib/std/slpush.o obj/lib/std/strstrip.o obj/lib/std/htab.o obj/lib/std/hashfuncs.o obj/lib/std/slput.o obj/lib/std/sjlj-impl.o obj/lib/std/fltbits.o obj/lib/std/striter.o obj/lib/std/types.o obj/lib/std/cstrconv.o obj/lib/std/units.o obj/lib/std/backtrace.o obj/lib/std/syswrap-ss.o obj/lib/std/die.o obj/lib/std/mk.o obj/lib/std/hassuffix.o obj/lib/std/memops-impl.o obj/lib/std/pledge.o obj/lib/std/utf.o obj/lib/std/slurp.o obj/lib/std/dialparse.o obj/lib/std/bytealloc.o obj/lib/std/mktemp.o obj/lib/std/consts.o obj/lib/std/chomp.o obj/lib/std/dir.o obj/lib/std/search.o obj/lib/std/memops.o obj/lib/std/fmtfuncs.o obj/lib/std/strfind.o obj/lib/std/env.o obj/lib/std/dirname.o obj/lib/std/clear.o obj/lib/std/listen.o obj/lib/std/sort.o obj/lib/std/cmp.o obj/lib/std/now.o obj/lib/std/intparse.o obj/lib/std/traits.o obj/lib/std/mkpath.o obj/lib/std/option.o obj/lib/std/dial.o obj/lib/std/errno.o obj/lib/std/chartype.o obj/lib/std/bigint.o obj/lib/std/bitset.o obj/lib/std/getbp.o obj/lib/std/slcp.o obj/lib/std/execvp.o
-	$pwd/muse/muse -o obj/lib/std/libstd.use -p std obj/lib/std/resolve.use obj/lib/std/result.use obj/lib/std/try.use obj/lib/std/ipparse.use obj/lib/std/alloc.use obj/lib/std/sleq.use obj/lib/std/putint.use obj/lib/std/sljoin.use obj/lib/std/slpop.use obj/lib/std/syswrap.use obj/lib/std/getint.use obj/lib/std/strsplit.use obj/lib/std/slfill.use obj/lib/std/writeall.use obj/lib/std/fltfmt.use obj/lib/std/hasprefix.use obj/lib/std/swap.use obj/lib/std/fmt.use obj/lib/std/netaddr.use obj/lib/std/varargs.use obj/lib/std/diriter.use obj/lib/std/getcwd.use obj/lib/std/blat.use obj/lib/std/optparse.use obj/lib/std/pathjoin.use obj/lib/std/readall.use obj/lib/std/strjoin.use obj/lib/std/threadhooks.use obj/lib/std/sjlj.use obj/lib/std/extremum.use obj/lib/std/endian.use obj/lib/std/rand.use obj/lib/std/sldup.use obj/lib/std/sleep.use obj/lib/std/wait.use obj/lib/std/introspect.use obj/lib/std/fltparse.use obj/lib/std/fndup.use obj/lib/std/strbuf.use obj/lib/std/strreplace.use obj/lib/std/assert.use obj/lib/std/spork.use obj/lib/std/slpush.use obj/lib/std/strstrip.use obj/lib/std/htab.use obj/lib/std/hashfuncs.use obj/lib/std/slput.use obj/lib/std/fltbits.use obj/lib/std/striter.use obj/lib/std/types.use obj/lib/std/cstrconv.use obj/lib/std/units.use obj/lib/std/backtrace.use obj/lib/std/syswrap-ss.use obj/lib/std/die.use obj/lib/std/mk.use obj/lib/std/hassuffix.use obj/lib/std/pledge.use obj/lib/std/utf.use obj/lib/std/slurp.use obj/lib/std/dialparse.use obj/lib/std/bytealloc.use obj/lib/std/mktemp.use obj/lib/std/consts.use obj/lib/std/chomp.use obj/lib/std/dir.use obj/lib/std/search.use obj/lib/std/memops.use obj/lib/std/fmtfuncs.use obj/lib/std/strfind.use obj/lib/std/env.use obj/lib/std/dirname.use obj/lib/std/clear.use obj/lib/std/listen.use obj/lib/std/sort.use obj/lib/std/cmp.use obj/lib/std/now.use obj/lib/std/intparse.use obj/lib/std/traits.use obj/lib/std/mkpath.use obj/lib/std/option.use obj/lib/std/dial.use obj/lib/std/errno.use obj/lib/std/chartype.use obj/lib/std/bigint.use obj/lib/std/bitset.use obj/lib/std/slcp.use obj/lib/std/execvp.use
+	ar -rcs obj/lib/std/libstd.a obj/lib/std/resolve.o obj/lib/std/result.o obj/lib/std/try.o obj/lib/std/ipparse.o obj/lib/std/alloc.o obj/lib/std/sleq.o obj/lib/std/putint.o obj/lib/std/sljoin.o obj/lib/std/slpop.o obj/lib/std/syswrap.o obj/lib/std/getint.o obj/lib/std/strsplit.o obj/lib/std/slfill.o obj/lib/std/writeall.o obj/lib/std/fltfmt.o obj/lib/std/hasprefix.o obj/lib/std/swap.o obj/lib/std/intfmt.o obj/lib/std/fmt.o obj/lib/std/netaddr.o obj/lib/std/varargs.o obj/lib/std/diriter.o obj/lib/std/getcwd.o obj/lib/std/blat.o obj/lib/std/optparse.o obj/lib/std/pathjoin.o obj/lib/std/readall.o obj/lib/std/strjoin.o obj/lib/std/threadhooks.o obj/lib/std/sjlj.o obj/lib/std/extremum.o obj/lib/std/endian.o obj/lib/std/rand.o obj/lib/std/sldup.o obj/lib/std/sleep.o obj/lib/std/wait.o obj/lib/std/introspect.o obj/lib/std/fltparse.o obj/lib/std/fndup.o obj/lib/std/strbuf.o obj/lib/std/strreplace.o obj/lib/std/assert.o obj/lib/std/spork.o obj/lib/std/slpush.o obj/lib/std/strstrip.o obj/lib/std/htab.o obj/lib/std/hashfuncs.o obj/lib/std/slput.o obj/lib/std/sjlj-impl.o obj/lib/std/fltbits.o obj/lib/std/striter.o obj/lib/std/types.o obj/lib/std/cstrconv.o obj/lib/std/units.o obj/lib/std/backtrace.o obj/lib/std/syswrap-ss.o obj/lib/std/die.o obj/lib/std/mk.o obj/lib/std/hassuffix.o obj/lib/std/memops-impl.o obj/lib/std/pledge.o obj/lib/std/utf.o obj/lib/std/slurp.o obj/lib/std/dialparse.o obj/lib/std/bytealloc.o obj/lib/std/mktemp.o obj/lib/std/consts.o obj/lib/std/chomp.o obj/lib/std/dir.o obj/lib/std/search.o obj/lib/std/memops.o obj/lib/std/fmtfuncs.o obj/lib/std/strfind.o obj/lib/std/env.o obj/lib/std/dirname.o obj/lib/std/clear.o obj/lib/std/listen.o obj/lib/std/sort.o obj/lib/std/cmp.o obj/lib/std/now.o obj/lib/std/intparse.o obj/lib/std/traits.o obj/lib/std/mkpath.o obj/lib/std/option.o obj/lib/std/dial.o obj/lib/std/errno.o obj/lib/std/chartype.o obj/lib/std/bigint.o obj/lib/std/bitset.o obj/lib/std/getbp.o obj/lib/std/slcp.o obj/lib/std/execvp.o
+	$pwd/muse/muse -o obj/lib/std/libstd.use -p std obj/lib/std/resolve.use obj/lib/std/result.use obj/lib/std/try.use obj/lib/std/ipparse.use obj/lib/std/alloc.use obj/lib/std/sleq.use obj/lib/std/putint.use obj/lib/std/sljoin.use obj/lib/std/slpop.use obj/lib/std/syswrap.use obj/lib/std/getint.use obj/lib/std/strsplit.use obj/lib/std/slfill.use obj/lib/std/writeall.use obj/lib/std/fltfmt.use obj/lib/std/hasprefix.use obj/lib/std/swap.use obj/lib/std/intfmt.use obj/lib/std/fmt.use obj/lib/std/netaddr.use obj/lib/std/varargs.use obj/lib/std/diriter.use obj/lib/std/getcwd.use obj/lib/std/blat.use obj/lib/std/optparse.use obj/lib/std/pathjoin.use obj/lib/std/readall.use obj/lib/std/strjoin.use obj/lib/std/threadhooks.use obj/lib/std/sjlj.use obj/lib/std/extremum.use obj/lib/std/endian.use obj/lib/std/rand.use obj/lib/std/sldup.use obj/lib/std/sleep.use obj/lib/std/wait.use obj/lib/std/introspect.use obj/lib/std/fltparse.use obj/lib/std/fndup.use obj/lib/std/strbuf.use obj/lib/std/strreplace.use obj/lib/std/assert.use obj/lib/std/spork.use obj/lib/std/slpush.use obj/lib/std/strstrip.use obj/lib/std/htab.use obj/lib/std/hashfuncs.use obj/lib/std/slput.use obj/lib/std/fltbits.use obj/lib/std/striter.use obj/lib/std/types.use obj/lib/std/cstrconv.use obj/lib/std/units.use obj/lib/std/backtrace.use obj/lib/std/syswrap-ss.use obj/lib/std/die.use obj/lib/std/mk.use obj/lib/std/hassuffix.use obj/lib/std/pledge.use obj/lib/std/utf.use obj/lib/std/slurp.use obj/lib/std/dialparse.use obj/lib/std/bytealloc.use obj/lib/std/mktemp.use obj/lib/std/consts.use obj/lib/std/chomp.use obj/lib/std/dir.use obj/lib/std/search.use obj/lib/std/memops.use obj/lib/std/fmtfuncs.use obj/lib/std/strfind.use obj/lib/std/env.use obj/lib/std/dirname.use obj/lib/std/clear.use obj/lib/std/listen.use obj/lib/std/sort.use obj/lib/std/cmp.use obj/lib/std/now.use obj/lib/std/intparse.use obj/lib/std/traits.use obj/lib/std/mkpath.use obj/lib/std/option.use obj/lib/std/dial.use obj/lib/std/errno.use obj/lib/std/chartype.use obj/lib/std/bigint.use obj/lib/std/bitset.use obj/lib/std/slcp.use obj/lib/std/execvp.use
 	$pwd/6/6m -O obj -I obj/lib/sys -I obj/lib/std -I obj/lib/bio -I obj/lib/regex -I obj/lib/thread mbld/types.myr
 	$pwd/6/6m -O obj -I obj/lib/sys -I obj/lib/std lib/regex/types.myr
 	$pwd/6/6m -O obj -I obj/lib/sys -I obj/lib/std lib/regex/interp.myr
@@ -173,5 +173,5 @@
 	$pwd/6/6m -O obj -I obj/lib/sys -I obj/lib/std -I obj/lib/bio -I obj/lib/regex -I obj/lib/thread mbld/test.myr
 	$pwd/6/6m -O obj -I obj/lib/sys -I obj/lib/std -I obj/lib/bio -I obj/lib/regex -I obj/lib/thread mbld/deps.myr
 	$pwd/6/6m -O obj -I obj/lib/sys -I obj/lib/std -I obj/lib/bio -I obj/lib/regex -I obj/lib/thread mbld/main.myr
-	ld -pagezero_size 0x100000000 -macosx_version_min 10.6 -o obj/mbld/mbld $pwd/rt/_myrrt.o obj/mbld/deps.o obj/mbld/main.o obj/mbld/util.o obj/mbld/cpufeatures.o obj/mbld/libs.o obj/mbld/syssel.o obj/mbld/config.o obj/mbld/opts.o obj/mbld/subtest.o obj/mbld/types.o obj/mbld/test.o obj/mbld/install.o obj/mbld/parse.o obj/mbld/build.o -Lobj/lib/thread -lthread -Lobj/lib/bio -lbio -Lobj/lib/regex -lregex -Lobj/lib/std -lstd -Lobj/lib/sys -lsys -macosx_version_min 10.6
+	ld -static -no_pie -pagezero_size 0x100000000 -o obj/mbld/mbld $pwd/rt/_myrrt.o obj/mbld/deps.o obj/mbld/main.o obj/mbld/util.o obj/mbld/cpufeatures.o obj/mbld/libs.o obj/mbld/syssel.o obj/mbld/config.o obj/mbld/opts.o obj/mbld/subtest.o obj/mbld/types.o obj/mbld/test.o obj/mbld/install.o obj/mbld/parse.o obj/mbld/build.o -Lobj/lib/thread -lthread -Lobj/lib/bio -lbio -Lobj/lib/regex -lregex -Lobj/lib/std -lstd -Lobj/lib/sys -lsys
 true
--- a/mk/bootstrap/bootstrap+Darwin-x86_64.sh
+++ b/mk/bootstrap/bootstrap+Darwin-x86_64.sh
@@ -128,8 +128,8 @@
 	$pwd/6/6m -O obj -I obj/lib/sys lib/std/dial+posixy.myr
 	$pwd/6/6m -O obj -I obj/lib/sys lib/std/listen+posixy.myr
 	$pwd/6/6m -O obj -I obj/lib/sys lib/std/try.myr
-	ar -rcs obj/lib/std/libstd.a obj/lib/std/resolve.o obj/lib/std/result.o obj/lib/std/try.o obj/lib/std/ipparse.o obj/lib/std/alloc.o obj/lib/std/sleq.o obj/lib/std/putint.o obj/lib/std/sljoin.o obj/lib/std/slpop.o obj/lib/std/syswrap.o obj/lib/std/getint.o obj/lib/std/strsplit.o obj/lib/std/slfill.o obj/lib/std/writeall.o obj/lib/std/fltfmt.o obj/lib/std/hasprefix.o obj/lib/std/swap.o obj/lib/std/fmt.o obj/lib/std/netaddr.o obj/lib/std/varargs.o obj/lib/std/diriter.o obj/lib/std/getcwd.o obj/lib/std/blat.o obj/lib/std/optparse.o obj/lib/std/pathjoin.o obj/lib/std/readall.o obj/lib/std/strjoin.o obj/lib/std/threadhooks.o obj/lib/std/sjlj.o obj/lib/std/extremum.o obj/lib/std/endian.o obj/lib/std/rand.o obj/lib/std/sldup.o obj/lib/std/sleep.o obj/lib/std/wait.o obj/lib/std/introspect.o obj/lib/std/fltparse.o obj/lib/std/fndup.o obj/lib/std/strbuf.o obj/lib/std/strreplace.o obj/lib/std/assert.o obj/lib/std/spork.o obj/lib/std/slpush.o obj/lib/std/strstrip.o obj/lib/std/htab.o obj/lib/std/hashfuncs.o obj/lib/std/slput.o obj/lib/std/sjlj-impl.o obj/lib/std/fltbits.o obj/lib/std/striter.o obj/lib/std/types.o obj/lib/std/cstrconv.o obj/lib/std/units.o obj/lib/std/backtrace.o obj/lib/std/syswrap-ss.o obj/lib/std/die.o obj/lib/std/mk.o obj/lib/std/hassuffix.o obj/lib/std/memops-impl.o obj/lib/std/pledge.o obj/lib/std/utf.o obj/lib/std/slurp.o obj/lib/std/dialparse.o obj/lib/std/bytealloc.o obj/lib/std/mktemp.o obj/lib/std/consts.o obj/lib/std/chomp.o obj/lib/std/dir.o obj/lib/std/search.o obj/lib/std/memops.o obj/lib/std/fmtfuncs.o obj/lib/std/strfind.o obj/lib/std/env.o obj/lib/std/dirname.o obj/lib/std/clear.o obj/lib/std/listen.o obj/lib/std/sort.o obj/lib/std/cmp.o obj/lib/std/now.o obj/lib/std/intparse.o obj/lib/std/traits.o obj/lib/std/mkpath.o obj/lib/std/option.o obj/lib/std/dial.o obj/lib/std/errno.o obj/lib/std/chartype.o obj/lib/std/bigint.o obj/lib/std/bitset.o obj/lib/std/getbp.o obj/lib/std/slcp.o obj/lib/std/execvp.o
-	$pwd/muse/muse -o obj/lib/std/libstd.use -p std obj/lib/std/resolve.use obj/lib/std/result.use obj/lib/std/try.use obj/lib/std/ipparse.use obj/lib/std/alloc.use obj/lib/std/sleq.use obj/lib/std/putint.use obj/lib/std/sljoin.use obj/lib/std/slpop.use obj/lib/std/syswrap.use obj/lib/std/getint.use obj/lib/std/strsplit.use obj/lib/std/slfill.use obj/lib/std/writeall.use obj/lib/std/fltfmt.use obj/lib/std/hasprefix.use obj/lib/std/swap.use obj/lib/std/fmt.use obj/lib/std/netaddr.use obj/lib/std/varargs.use obj/lib/std/diriter.use obj/lib/std/getcwd.use obj/lib/std/blat.use obj/lib/std/optparse.use obj/lib/std/pathjoin.use obj/lib/std/readall.use obj/lib/std/strjoin.use obj/lib/std/threadhooks.use obj/lib/std/sjlj.use obj/lib/std/extremum.use obj/lib/std/endian.use obj/lib/std/rand.use obj/lib/std/sldup.use obj/lib/std/sleep.use obj/lib/std/wait.use obj/lib/std/introspect.use obj/lib/std/fltparse.use obj/lib/std/fndup.use obj/lib/std/strbuf.use obj/lib/std/strreplace.use obj/lib/std/assert.use obj/lib/std/spork.use obj/lib/std/slpush.use obj/lib/std/strstrip.use obj/lib/std/htab.use obj/lib/std/hashfuncs.use obj/lib/std/slput.use obj/lib/std/fltbits.use obj/lib/std/striter.use obj/lib/std/types.use obj/lib/std/cstrconv.use obj/lib/std/units.use obj/lib/std/backtrace.use obj/lib/std/syswrap-ss.use obj/lib/std/die.use obj/lib/std/mk.use obj/lib/std/hassuffix.use obj/lib/std/pledge.use obj/lib/std/utf.use obj/lib/std/slurp.use obj/lib/std/dialparse.use obj/lib/std/bytealloc.use obj/lib/std/mktemp.use obj/lib/std/consts.use obj/lib/std/chomp.use obj/lib/std/dir.use obj/lib/std/search.use obj/lib/std/memops.use obj/lib/std/fmtfuncs.use obj/lib/std/strfind.use obj/lib/std/env.use obj/lib/std/dirname.use obj/lib/std/clear.use obj/lib/std/listen.use obj/lib/std/sort.use obj/lib/std/cmp.use obj/lib/std/now.use obj/lib/std/intparse.use obj/lib/std/traits.use obj/lib/std/mkpath.use obj/lib/std/option.use obj/lib/std/dial.use obj/lib/std/errno.use obj/lib/std/chartype.use obj/lib/std/bigint.use obj/lib/std/bitset.use obj/lib/std/slcp.use obj/lib/std/execvp.use
+	ar -rcs obj/lib/std/libstd.a obj/lib/std/resolve.o obj/lib/std/result.o obj/lib/std/try.o obj/lib/std/ipparse.o obj/lib/std/alloc.o obj/lib/std/sleq.o obj/lib/std/putint.o obj/lib/std/sljoin.o obj/lib/std/slpop.o obj/lib/std/syswrap.o obj/lib/std/getint.o obj/lib/std/strsplit.o obj/lib/std/slfill.o obj/lib/std/writeall.o obj/lib/std/fltfmt.o obj/lib/std/hasprefix.o obj/lib/std/swap.o obj/lib/std/intfmt.o obj/lib/std/fmt.o obj/lib/std/netaddr.o obj/lib/std/varargs.o obj/lib/std/diriter.o obj/lib/std/getcwd.o obj/lib/std/blat.o obj/lib/std/optparse.o obj/lib/std/pathjoin.o obj/lib/std/readall.o obj/lib/std/strjoin.o obj/lib/std/threadhooks.o obj/lib/std/sjlj.o obj/lib/std/extremum.o obj/lib/std/endian.o obj/lib/std/rand.o obj/lib/std/sldup.o obj/lib/std/sleep.o obj/lib/std/wait.o obj/lib/std/introspect.o obj/lib/std/fltparse.o obj/lib/std/fndup.o obj/lib/std/strbuf.o obj/lib/std/strreplace.o obj/lib/std/assert.o obj/lib/std/spork.o obj/lib/std/slpush.o obj/lib/std/strstrip.o obj/lib/std/htab.o obj/lib/std/hashfuncs.o obj/lib/std/slput.o obj/lib/std/sjlj-impl.o obj/lib/std/fltbits.o obj/lib/std/striter.o obj/lib/std/types.o obj/lib/std/cstrconv.o obj/lib/std/units.o obj/lib/std/backtrace.o obj/lib/std/syswrap-ss.o obj/lib/std/die.o obj/lib/std/mk.o obj/lib/std/hassuffix.o obj/lib/std/memops-impl.o obj/lib/std/pledge.o obj/lib/std/utf.o obj/lib/std/slurp.o obj/lib/std/dialparse.o obj/lib/std/bytealloc.o obj/lib/std/mktemp.o obj/lib/std/consts.o obj/lib/std/chomp.o obj/lib/std/dir.o obj/lib/std/search.o obj/lib/std/memops.o obj/lib/std/fmtfuncs.o obj/lib/std/strfind.o obj/lib/std/env.o obj/lib/std/dirname.o obj/lib/std/clear.o obj/lib/std/listen.o obj/lib/std/sort.o obj/lib/std/cmp.o obj/lib/std/now.o obj/lib/std/intparse.o obj/lib/std/traits.o obj/lib/std/mkpath.o obj/lib/std/option.o obj/lib/std/dial.o obj/lib/std/errno.o obj/lib/std/chartype.o obj/lib/std/bigint.o obj/lib/std/bitset.o obj/lib/std/getbp.o obj/lib/std/slcp.o obj/lib/std/execvp.o
+	$pwd/muse/muse -o obj/lib/std/libstd.use -p std obj/lib/std/resolve.use obj/lib/std/result.use obj/lib/std/try.use obj/lib/std/ipparse.use obj/lib/std/alloc.use obj/lib/std/sleq.use obj/lib/std/putint.use obj/lib/std/sljoin.use obj/lib/std/slpop.use obj/lib/std/syswrap.use obj/lib/std/getint.use obj/lib/std/strsplit.use obj/lib/std/slfill.use obj/lib/std/writeall.use obj/lib/std/fltfmt.use obj/lib/std/hasprefix.use obj/lib/std/swap.use obj/lib/std/intfmt.use obj/lib/std/fmt.use obj/lib/std/netaddr.use obj/lib/std/varargs.use obj/lib/std/diriter.use obj/lib/std/getcwd.use obj/lib/std/blat.use obj/lib/std/optparse.use obj/lib/std/pathjoin.use obj/lib/std/readall.use obj/lib/std/strjoin.use obj/lib/std/threadhooks.use obj/lib/std/sjlj.use obj/lib/std/extremum.use obj/lib/std/endian.use obj/lib/std/rand.use obj/lib/std/sldup.use obj/lib/std/sleep.use obj/lib/std/wait.use obj/lib/std/introspect.use obj/lib/std/fltparse.use obj/lib/std/fndup.use obj/lib/std/strbuf.use obj/lib/std/strreplace.use obj/lib/std/assert.use obj/lib/std/spork.use obj/lib/std/slpush.use obj/lib/std/strstrip.use obj/lib/std/htab.use obj/lib/std/hashfuncs.use obj/lib/std/slput.use obj/lib/std/fltbits.use obj/lib/std/striter.use obj/lib/std/types.use obj/lib/std/cstrconv.use obj/lib/std/units.use obj/lib/std/backtrace.use obj/lib/std/syswrap-ss.use obj/lib/std/die.use obj/lib/std/mk.use obj/lib/std/hassuffix.use obj/lib/std/pledge.use obj/lib/std/utf.use obj/lib/std/slurp.use obj/lib/std/dialparse.use obj/lib/std/bytealloc.use obj/lib/std/mktemp.use obj/lib/std/consts.use obj/lib/std/chomp.use obj/lib/std/dir.use obj/lib/std/search.use obj/lib/std/memops.use obj/lib/std/fmtfuncs.use obj/lib/std/strfind.use obj/lib/std/env.use obj/lib/std/dirname.use obj/lib/std/clear.use obj/lib/std/listen.use obj/lib/std/sort.use obj/lib/std/cmp.use obj/lib/std/now.use obj/lib/std/intparse.use obj/lib/std/traits.use obj/lib/std/mkpath.use obj/lib/std/option.use obj/lib/std/dial.use obj/lib/std/errno.use obj/lib/std/chartype.use obj/lib/std/bigint.use obj/lib/std/bitset.use obj/lib/std/slcp.use obj/lib/std/execvp.use
 	$pwd/6/6m -O obj -I obj/lib/sys -I obj/lib/std -I obj/lib/bio -I obj/lib/regex -I obj/lib/thread mbld/types.myr
 	$pwd/6/6m -O obj -I obj/lib/sys -I obj/lib/std lib/regex/types.myr
 	$pwd/6/6m -O obj -I obj/lib/sys -I obj/lib/std lib/regex/interp.myr
@@ -173,5 +173,5 @@
 	$pwd/6/6m -O obj -I obj/lib/sys -I obj/lib/std -I obj/lib/bio -I obj/lib/regex -I obj/lib/thread mbld/test.myr
 	$pwd/6/6m -O obj -I obj/lib/sys -I obj/lib/std -I obj/lib/bio -I obj/lib/regex -I obj/lib/thread mbld/deps.myr
 	$pwd/6/6m -O obj -I obj/lib/sys -I obj/lib/std -I obj/lib/bio -I obj/lib/regex -I obj/lib/thread mbld/main.myr
-	ld -pagezero_size 0x100000000 -macosx_version_min 10.6 -o obj/mbld/mbld $pwd/rt/_myrrt.o obj/mbld/deps.o obj/mbld/main.o obj/mbld/util.o obj/mbld/cpufeatures.o obj/mbld/libs.o obj/mbld/syssel.o obj/mbld/config.o obj/mbld/opts.o obj/mbld/subtest.o obj/mbld/types.o obj/mbld/test.o obj/mbld/install.o obj/mbld/parse.o obj/mbld/build.o -Lobj/lib/thread -lthread -Lobj/lib/bio -lbio -Lobj/lib/regex -lregex -Lobj/lib/std -lstd -Lobj/lib/sys -lsys -macosx_version_min 10.6
+	ld -static -no_pie -pagezero_size 0x100000000 -o obj/mbld/mbld $pwd/rt/_myrrt.o obj/mbld/deps.o obj/mbld/main.o obj/mbld/util.o obj/mbld/cpufeatures.o obj/mbld/libs.o obj/mbld/syssel.o obj/mbld/config.o obj/mbld/opts.o obj/mbld/subtest.o obj/mbld/types.o obj/mbld/test.o obj/mbld/install.o obj/mbld/parse.o obj/mbld/build.o -Lobj/lib/thread -lthread -Lobj/lib/bio -lbio -Lobj/lib/regex -lregex -Lobj/lib/std -lstd -Lobj/lib/sys -lsys
 true
diff -u a/support/vim/syntax/myr.vim b/support/vim/syntax/myr.vim
--- a/support/vim/syntax/myr.vim
+++ b/support/vim/syntax/myr.vim
@@ -6,45 +6,44 @@
     finish
 endif
 
+if exists("myr_color_on")
+  syn keyword myrConditional if elif else match
+  syn keyword myrRepeat      while for
+  syn keyword myrStructure   generic impl struct trait union type
+  syn keyword myrItem        const var extern auto
+  syn keyword myrPackage     pkg pkglocal use
+  syn keyword myrControl     break continue goto
+  syn keyword myrBool        true false
+  syn keyword myrSizeOf      sizeof
+  syn match   myrTerminate   ';;'
+endif
+
 syn region myrComment start=+/\*+ end=+\*/+ contains=myrComment
 syn region myrComment start=+//+ end=+$+
-syn match myrSpecial display contained "\\\(x\x\+\|\o\{1,3}\|u{[a-zA-Z0-9_]*}\|.\|$\)"
-syn match myrFormat display contained "{[^}]*}"
-syn region myrString start=+"+ skip=+\\"+ end=+"+ contains=myrSpecial,myrFormat extend
-syn region myrChar start=+'+ skip=+\\'+ end=+'+ contains=myrSpecial,myrFormat extend
-syn keyword myrKeyword auto
-                     \ break
-                     \ const
-                     \ continue
-                     \ elif
-                     \ else
-                     \ extern
-                     \ false
-                     \ for
-                     \ generic
-                     \ goto
-                     \ if
-                     \ impl
-                     \ match
-                     \ pkg
-                     \ pkglocal
-                     \ sizeof
-                     \ struct
-                     \ trait
-                     \ true
-                     \ type
-                     \ union
-                     \ use
-                     \ var
-                     \ while
+syn match  myrSpecial display contained "\\\(x\x\+\|\o\{1,3}\|u{[a-zA-Z0-9_]*}\|.\|$\)"
+syn match  myrFormat  display contained "{[^}]*}"
+syn region myrString  start=+"+ skip=+\\"+ end=+"+ contains=myrSpecial,myrFormat extend
+syn region myrChar    start=+'+ skip=+\\'+ end=+'+ contains=myrSpecial,myrFormat extend
 
 hi def link myrComment  Comment
 hi def link myrString   String
-hi def link myrChar   String
+hi def link myrChar     String
 hi def link myrSpecial  Special
 hi def link myrFormat   Special
+
 " Too much color makes my eyes hurt. Just highlight
 " the most important and uncommon stuff.
-"hi def link myrKeyword  Keyword
+
+if exists("myr_color_on")
+  hi def link myrConditional Conditional
+  hi def link myrRepeat      Repeat
+  hi def link myrStructure   Structure
+  hi def link myrItem        Constant
+  hi def link myrPackage     Statement
+  hi def link myrControl     Statement
+  hi def link myrBool        Constant
+  hi def link myrSizeOf      Identifier
+  hi def link myrTerminate   SpecialChar
+endif
 
 let b:current_syntax = "myr"
diff -u a/support/vim/syntax/myr.vim b/support/vim/syntax/myr.vim
--- a/support/vim/syntax/myr.vim
+++ b/support/vim/syntax/myr.vim
@@ -6,45 +6,44 @@
     finish
 endif
 
+if exists("myr_color_on")
+  syn keyword myrConditional if elif else match
+  syn keyword myrRepeat      while for
+  syn keyword myrStructure   generic impl struct trait union type
+  syn keyword myrItem        const var extern auto
+  syn keyword myrPackage     pkg pkglocal use
+  syn keyword myrControl     break continue goto
+  syn keyword myrBool        true false
+  syn keyword myrSizeOf      sizeof
+  syn match   myrTerminate   ';;'
+endif
+
 syn region myrComment start=+/\*+ end=+\*/+ contains=myrComment
 syn region myrComment start=+//+ end=+$+
-syn match myrSpecial display contained "\\\(x\x\+\|\o\{1,3}\|u{[a-zA-Z0-9_]*}\|.\|$\)"
-syn match myrFormat display contained "{[^}]*}"
-syn region myrString start=+"+ skip=+\\"+ end=+"+ contains=myrSpecial,myrFormat extend
-syn region myrChar start=+'+ skip=+\\'+ end=+'+ contains=myrSpecial,myrFormat extend
-syn keyword myrKeyword auto
-                     \ break
-                     \ const
-                     \ continue
-                     \ elif
-                     \ else
-                     \ extern
-                     \ false
-                     \ for
-                     \ generic
-                     \ goto
-                     \ if
-                     \ impl
-                     \ match
-                     \ pkg
-                     \ pkglocal
-                     \ sizeof
-                     \ struct
-                     \ trait
-                     \ true
-                     \ type
-                     \ union
-                     \ use
-                     \ var
-                     \ while
+syn match  myrSpecial display contained "\\\(x\x\+\|\o\{1,3}\|u{[a-zA-Z0-9_]*}\|.\|$\)"
+syn match  myrFormat  display contained "{[^}]*}"
+syn region myrString  start=+"+ skip=+\\"+ end=+"+ contains=myrSpecial,myrFormat extend
+syn region myrChar    start=+'+ skip=+\\'+ end=+'+ contains=myrSpecial,myrFormat extend
 
 hi def link myrComment  Comment
 hi def link myrString   String
-hi def link myrChar   String
+hi def link myrChar     String
 hi def link myrSpecial  Special
 hi def link myrFormat   Special
+
 " Too much color makes my eyes hurt. Just highlight
 " the most important and uncommon stuff.
-"hi def link myrKeyword  Keyword
+
+if exists("myr_color_on")
+  hi def link myrConditional Conditional
+  hi def link myrRepeat      Repeat
+  hi def link myrStructure   Structure
+  hi def link myrItem        Constant
+  hi def link myrPackage     Statement
+  hi def link myrControl     Statement
+  hi def link myrBool        Constant
+  hi def link myrSizeOf      Identifier
+  hi def link myrTerminate   SpecialChar
+endif
 
 let b:current_syntax = "myr"
--- a/support/vim/syntax/myr.vim
+++ b/support/vim/syntax/myr.vim
@@ -6,45 +6,44 @@
     finish
 endif
 
+if exists("myr_color_on")
+  syn keyword myrConditional if elif else match
+  syn keyword myrRepeat      while for
+  syn keyword myrStructure   generic impl struct trait union type
+  syn keyword myrItem        const var extern auto
+  syn keyword myrPackage     pkg pkglocal use
+  syn keyword myrControl     break continue goto
+  syn keyword myrBool        true false
+  syn keyword myrSizeOf      sizeof
+  syn match   myrTerminate   ';;'
+endif
+
 syn region myrComment start=+/\*+ end=+\*/+ contains=myrComment
 syn region myrComment start=+//+ end=+$+
-syn match myrSpecial display contained "\\\(x\x\+\|\o\{1,3}\|u{[a-zA-Z0-9_]*}\|.\|$\)"
-syn match myrFormat display contained "{[^}]*}"
-syn region myrString start=+"+ skip=+\\"+ end=+"+ contains=myrSpecial,myrFormat extend
-syn region myrChar start=+'+ skip=+\\'+ end=+'+ contains=myrSpecial,myrFormat extend
-syn keyword myrKeyword auto
-                     \ break
-                     \ const
-                     \ continue
-                     \ elif
-                     \ else
-                     \ extern
-                     \ false
-                     \ for
-                     \ generic
-                     \ goto
-                     \ if
-                     \ impl
-                     \ match
-                     \ pkg
-                     \ pkglocal
-                     \ sizeof
-                     \ struct
-                     \ trait
-                     \ true
-                     \ type
-                     \ union
-                     \ use
-                     \ var
-                     \ while
+syn match  myrSpecial display contained "\\\(x\x\+\|\o\{1,3}\|u{[a-zA-Z0-9_]*}\|.\|$\)"
+syn match  myrFormat  display contained "{[^}]*}"
+syn region myrString  start=+"+ skip=+\\"+ end=+"+ contains=myrSpecial,myrFormat extend
+syn region myrChar    start=+'+ skip=+\\'+ end=+'+ contains=myrSpecial,myrFormat extend
 
 hi def link myrComment  Comment
 hi def link myrString   String
-hi def link myrChar   String
+hi def link myrChar     String
 hi def link myrSpecial  Special
 hi def link myrFormat   Special
+
 " Too much color makes my eyes hurt. Just highlight
 " the most important and uncommon stuff.
-"hi def link myrKeyword  Keyword
+
+if exists("myr_color_on")
+  hi def link myrConditional Conditional
+  hi def link myrRepeat      Repeat
+  hi def link myrStructure   Structure
+  hi def link myrItem        Constant
+  hi def link myrPackage     Statement
+  hi def link myrControl     Statement
+  hi def link myrBool        Constant
+  hi def link myrSizeOf      Identifier
+  hi def link myrTerminate   SpecialChar
+endif
 
 let b:current_syntax = "myr"