Signed-off-by: Ember Sawady <ecs@d2evs.net>
---
README.md | 3 +++
ascii/ctype.ha | 4 ----
ascii/string.ha | 3 ---
ascii/valid.ha | 3 ---
bufio/scanner.ha | 4 ----
bufio/stream.ha | 5 -----
bytes/contains.ha | 5 -----
bytes/equal.ha | 3 ---
bytes/index.ha | 5 -----
bytes/reverse.ha | 3 ---
bytes/tokenize.ha | 4 ----
bytes/two_way.ha | 2 --
bytes/zero.ha | 2 --
cmd/hare/main.ha | 3 ---
cmd/harec/context.ha | 3 ---
cmd/harec/errors.ha | 3 ---
cmd/harec/gen.ha | 4 ----
cmd/harec/genutil.ha | 2 --
cmd/harec/main.ha | 4 ----
cmd/harec/qbe.ha | 3 ---
cmd/harec/qtype.ha | 3 ---
cmd/haredoc/doc/color.ha | 2 --
cmd/haredoc/doc/hare.ha | 4 ----
cmd/haredoc/doc/html.ha | 8 --------
cmd/haredoc/doc/resolve.ha | 4 ----
cmd/haredoc/doc/sort.ha | 3 ---
cmd/haredoc/doc/tty.ha | 4 ----
cmd/haredoc/doc/types.ha | 3 ---
cmd/haredoc/doc/util.ha | 3 ---
cmd/haredoc/main.ha | 5 -----
cmd/haretype/main.ha | 2 --
crypto/+test/authenc_test.ha | 2 --
crypto/aes/aes+x86_64.ha | 2 --
crypto/aes/aes.ha | 2 --
crypto/aes/aes_ct64.ha | 4 ----
crypto/aes/block.ha | 2 --
crypto/aes/cbc+test.ha | 3 ---
crypto/aes/ct64+test.ha | 3 ---
crypto/aes/ctr+test.ha | 3 ---
crypto/aes/rt+test.ha | 3 ---
crypto/aes/xts/+test.ha | 2 --
crypto/aes/xts/xts.ha | 2 --
crypto/argon2/+test.ha | 3 ---
crypto/authenc.ha | 3 ---
crypto/bcrypt/base64.ha | 4 ----
crypto/bcrypt/bcrypt.ha | 4 ----
crypto/blake2b/+test.ha | 5 -----
crypto/blake2b/blake2b.ha | 4 ----
crypto/blake2b/vectors+test.ha | 3 ---
crypto/blowfish/blowfish.ha | 2 --
crypto/blowfish/const.ha | 2 --
crypto/chacha/+test.ha | 2 --
crypto/chacha/chacha20.ha | 2 --
crypto/chachapoly/chachapoly.ha | 2 --
crypto/chachapoly/encryption+test.ha | 2 --
crypto/cipher/block.ha | 4 ----
crypto/cipher/cbc.ha | 3 ---
crypto/cipher/cipher.ha | 3 ---
crypto/cipher/ctr.ha | 3 ---
crypto/cipher/gcm.ha | 2 --
crypto/cipher/stream.ha | 2 --
crypto/curve25519/+test.ha | 2 --
crypto/curve25519/curve25519.ha | 2 --
crypto/ed25519/+test.ha | 2 --
crypto/ed25519/ed25519.ha | 3 ---
crypto/ed25519/edwards25519.ha | 3 ---
crypto/hkdf/+test.ha | 2 --
crypto/hkdf/hkdf.ha | 2 --
crypto/hmac/+test.ha | 2 --
crypto/hmac/hmac.ha | 3 ---
crypto/hmac/sha1.ha | 2 --
crypto/hmac/sha256.ha | 2 --
crypto/keyderiv.ha | 2 --
crypto/mac/mac.ha | 2 --
crypto/math/arithm.ha | 3 ---
crypto/math/bits.ha | 5 -----
crypto/poly1305/+test.ha | 2 --
crypto/poly1305/poly1305.ha | 3 ---
crypto/random/+freebsd.ha | 3 ---
crypto/random/+linux.ha | 3 ---
crypto/random/random.ha | 3 ---
crypto/rsa/+test/core_test.ha | 2 --
crypto/rsa/+test/keys_test.ha | 2 --
crypto/rsa/+test/pkcs1_test.ha | 2 --
crypto/rsa/errors.ha | 2 --
crypto/rsa/keys.ha | 2 --
crypto/rsa/pkcs1.ha | 2 --
crypto/salsa/+test.ha | 2 --
crypto/salsa/salsa20.ha | 2 --
crypto/sha1/+test.ha | 4 ----
crypto/sha1/sha1.ha | 5 -----
crypto/sha256/+test.ha | 4 ----
crypto/sha256/sha256.ha | 4 ----
crypto/sha512/+test.ha | 4 ----
crypto/sha512/sha512.ha | 6 ------
crypto/x25519/+test.ha | 2 --
crypto/x25519/x25519.ha | 2 --
dirs/xdg.ha | 6 ------
encoding/base32/base32.ha | 2 --
encoding/base64/base64.ha | 7 -------
encoding/hex/hex.ha | 5 -----
encoding/pem/+test.ha | 2 --
encoding/pem/pem.ha | 2 --
encoding/utf8/decode.ha | 5 -----
encoding/utf8/encode.ha | 3 ---
encoding/utf8/rune.ha | 3 ---
endian/big.ha | 4 ----
endian/endian.ha | 4 ----
endian/host+aarch64.ha | 3 ---
endian/host+riscv64.ha | 3 ---
endian/host+x86_64.ha | 3 ---
endian/little.ha | 4 ----
endian/network.ha | 3 ---
errors/common.ha | 5 -----
errors/opaque.ha | 4 ----
errors/rt.ha | 2 --
errors/string.ha | 4 ----
fmt/fmt.ha | 7 -------
fnmatch/+test.ha | 3 ---
fnmatch/fnmatch.ha | 7 -------
format/elf/arch+aarch64.ha | 3 ---
format/elf/arch+riscv64.ha | 3 ---
format/elf/arch+x86_64.ha | 3 ---
format/elf/platform+freebsd.ha | 3 ---
format/elf/platform+linux.ha | 3 ---
format/elf/types.ha | 5 -----
format/ini/+test.ha | 2 --
format/ini/scan.ha | 5 -----
format/ini/types.ha | 4 ----
format/tar/reader.ha | 2 --
format/tar/types.ha | 2 --
fs/fs.ha | 8 --------
fs/types.ha | 5 -----
fs/util.ha | 5 -----
getopt/getopts.ha | 7 -------
glob/glob.ha | 2 --
hare/ast/decl.ha | 3 ---
hare/ast/expr.ha | 4 ----
hare/ast/ident.ha | 4 ----
hare/ast/import.ha | 3 ---
hare/ast/type.ha | 4 ----
hare/ast/unit.ha | 4 ----
hare/lex/+test.ha | 7 -------
hare/lex/lex.ha | 7 -------
hare/lex/token.ha | 4 ----
hare/parse/+test/expr_test.ha | 7 -------
hare/parse/+test/ident_test.ha | 3 ---
hare/parse/+test/loc.ha | 4 ----
hare/parse/+test/roundtrip.ha | 5 -----
hare/parse/+test/types.ha | 3 ---
hare/parse/+test/unit_test.ha | 6 ------
hare/parse/decl.ha | 3 ---
hare/parse/doc/doc.ha | 6 ------
hare/parse/expr.ha | 6 ------
hare/parse/ident.ha | 4 ----
hare/parse/import.ha | 3 ---
hare/parse/parse.ha | 5 -----
hare/parse/type.ha | 4 ----
hare/parse/unit.ha | 3 ---
hare/types/+test.ha | 6 ------
hare/types/arch.ha | 3 ---
hare/types/builtins.ha | 3 ---
hare/types/class.ha | 4 ----
hare/types/hash.ha | 3 ---
hare/types/lookup.ha | 3 ---
hare/types/store.ha | 4 ----
hare/types/types.ha | 4 ----
hare/unit/+test.ha | 3 ---
hare/unit/check.ha | 3 ---
hare/unit/context.ha | 2 --
hare/unit/errors.ha | 2 --
hare/unit/expr.ha | 2 --
hare/unit/process.ha | 6 ------
hare/unit/scan.ha | 4 ----
hare/unit/scope.ha | 3 ---
hare/unit/unit.ha | 2 --
hare/unparse/decl.ha | 5 -----
hare/unparse/expr.ha | 5 -----
hare/unparse/ident.ha | 4 ----
hare/unparse/import.ha | 4 ----
hare/unparse/type.ha | 4 ----
hare/unparse/unit.ha | 3 ---
hare/unparse/util.ha | 3 ---
hash/adler32/adler32.ha | 4 ----
hash/crc16/crc16.ha | 4 ----
hash/crc32/crc32.ha | 4 ----
hash/crc64/crc64.ha | 4 ----
hash/fnv/+aarch64.ha | 4 ----
hash/fnv/+riscv64.ha | 4 ----
hash/fnv/+x86_64.ha | 4 ----
hash/fnv/fnv.ha | 3 ---
hash/hash.ha | 4 ----
io/+freebsd/mmap.ha | 3 ---
io/+freebsd/platform_file.ha | 3 ---
io/+freebsd/vector.ha | 2 --
io/+linux/mmap.ha | 3 ---
io/+linux/platform_file.ha | 4 ----
io/+linux/vector.ha | 2 --
io/+test/limit_test.ha | 4 ----
io/+test/stream_test.ha | 4 ----
io/arch+aarch64.ha | 3 ---
io/arch+riscv64.ha | 3 ---
io/arch+x86_64.ha | 3 ---
io/copy.ha | 3 ---
io/drain.ha | 5 -----
io/empty.ha | 4 ----
io/file.ha | 1 -
io/handle.ha | 4 ----
io/limit.ha | 5 -----
io/stream.ha | 4 ----
io/tee.ha | 4 ----
io/types.ha | 3 ---
io/util.ha | 5 -----
io/zero.ha | 3 ---
linux/env.ha | 2 --
linux/start+libc.ha | 2 --
linux/start.ha | 2 --
linux/timerfd/timerfd.ha | 3 ---
linux/vdso/vdso.ha | 4 ----
math/+test/data.ha | 4 ----
math/complex/+test.ha | 4 ----
math/complex/complex.ha | 4 ----
math/fenv+aarch64.ha | 3 ---
math/fenv+riscv64.ha | 4 ----
math/fenv+x86_64.ha | 3 ---
math/fenv_func.ha | 2 --
math/floats.ha | 6 ------
math/ints.ha | 5 -----
math/math.ha | 5 -----
math/random/random.ha | 3 ---
math/trig.ha | 3 ---
math/uints.ha | 3 ---
memio/ops.ha | 4 ----
memio/stream.ha | 5 -----
mime/database.ha | 2 --
mime/entries+test.ha | 2 --
mime/lookup.ha | 2 --
mime/parse.ha | 2 --
mime/system.ha | 2 --
net/+freebsd.ha | 4 ----
net/+linux.ha | 4 ----
net/dial/dial.ha | 2 --
net/dial/ip.ha | 5 -----
net/dial/registry.ha | 3 ---
net/dial/resolve.ha | 3 ---
net/dns/decode.ha | 3 ---
net/dns/encode.ha | 2 --
net/dns/error.ha | 3 ---
net/dns/query.ha | 2 --
net/dns/strdomain.ha | 2 --
net/dns/types.ha | 5 -----
net/errors.ha | 4 ----
net/ip/+freebsd.ha | 3 ---
net/ip/+linux.ha | 4 ----
net/ip/ip.ha | 9 ---------
net/ip/test+test.ha | 6 ------
net/msg.ha | 3 ---
net/tcp/+freebsd.ha | 3 ---
net/tcp/+linux.ha | 3 ---
net/tcp/listener.ha | 2 --
net/tcp/options.ha | 2 --
net/udp/+freebsd.ha | 3 ---
net/udp/+linux.ha | 3 ---
net/udp/options.ha | 2 --
net/unix/+freebsd.ha | 3 ---
net/unix/+linux.ha | 4 ----
net/unix/addr.ha | 4 ----
net/unix/cmsg.ha | 2 --
net/unix/dial.ha | 3 ---
net/unix/listener.ha | 2 --
net/unix/options.ha | 2 --
net/unix/socketpair.ha | 3 ---
net/uri/parse.ha | 3 ---
os/+freebsd/dirfdfs.ha | 4 ----
os/+freebsd/exit+test.ha | 3 ---
os/+freebsd/exit.ha | 2 --
os/+freebsd/fs.ha | 3 ---
os/+freebsd/platform_environ.ha | 3 ---
os/+freebsd/stdfd.ha | 3 ---
os/+linux/dirfdfs.ha | 6 ------
os/+linux/exit+test.ha | 3 ---
os/+linux/exit.ha | 2 --
os/+linux/fs.ha | 3 ---
os/+linux/platform_environ.ha | 3 ---
os/+linux/stdfd.ha | 3 ---
os/exec/cmd.ha | 4 ----
os/exec/exec+freebsd.ha | 3 ---
os/exec/exec+linux.ha | 3 ---
os/exec/process+freebsd.ha | 4 ----
os/exec/process+linux.ha | 4 ----
os/exec/types.ha | 3 ---
os/os.ha | 5 -----
path/+freebsd.ha | 3 ---
path/+linux.ha | 3 ---
path/buffer.ha | 3 ---
path/ext_stack.ha | 1 -
path/iter.ha | 4 ----
path/posix.ha | 4 ----
path/stack.ha | 2 --
regex/+test.ha | 2 --
regex/regex.ha | 2 --
rt/+aarch64/arch_jmp.ha | 3 ---
rt/+aarch64/backtrace.ha | 5 -----
rt/+freebsd/env.ha | 3 ---
rt/+freebsd/errno.ha | 3 ---
rt/+freebsd/platform_abort.ha | 3 ---
rt/+freebsd/platformstart.ha | 3 ---
rt/+freebsd/segmalloc.ha | 4 ----
rt/+freebsd/signal.ha | 3 ---
rt/+freebsd/socket.ha | 4 ----
rt/+freebsd/syscallno.ha | 3 ---
rt/+freebsd/syscalls.ha | 5 -----
rt/+freebsd/types.ha | 6 ------
rt/+linux/+aarch64.ha | 5 -----
rt/+linux/+riscv64.ha | 5 -----
rt/+linux/+x86_64.ha | 4 ----
rt/+linux/env.ha | 3 ---
rt/+linux/errno.ha | 4 ----
rt/+linux/platform_abort.ha | 3 ---
rt/+linux/platformstart-libc.ha | 4 ----
rt/+linux/prctl.ha | 3 ---
rt/+linux/segmalloc.ha | 4 ----
rt/+linux/signal.ha | 3 ---
rt/+linux/socket.ha | 4 ----
rt/+linux/stat.ha | 3 ---
rt/+linux/syscallno+aarch64.ha | 3 ---
rt/+linux/syscallno+riscv64.ha | 3 ---
rt/+linux/syscallno+x86_64.ha | 3 ---
rt/+linux/syscalls.ha | 8 --------
rt/+linux/types.ha | 10 ----------
rt/+riscv64/arch_jmp.ha | 3 ---
rt/+riscv64/backtrace.ha | 4 ----
rt/+riscv64/fenv.s | 3 ---
rt/+test/signal_test.ha | 3 ---
rt/+x86_64/arch_jmp.ha | 3 ---
rt/+x86_64/backtrace.ha | 5 -----
rt/abort+test.ha | 4 ----
rt/abort.ha | 3 ---
rt/ensure.ha | 4 ----
rt/fenv_defs.ha | 3 ---
rt/jmp.ha | 3 ---
rt/malloc+libc.ha | 3 ---
rt/memcpy.ha | 3 ---
rt/memfunc_ptr.ha | 2 --
rt/memmove.ha | 3 ---
rt/memset.ha | 3 ---
rt/start+libc.ha | 3 ---
rt/start+test+libc.ha | 3 ---
rt/start+test.ha | 3 ---
rt/start.ha | 4 ----
rt/strcmp.ha | 3 ---
shlex/+test.ha | 3 ---
shlex/escape.ha | 3 ---
shlex/split.ha | 3 ---
sort/+test.ha | 4 ----
sort/bisect.ha | 3 ---
sort/search.ha | 3 ---
sort/sort.ha | 4 ----
sort/types.ha | 2 --
strconv/+test/stoi_test.ha | 5 -----
strconv/+test/stou_test.ha | 5 -----
strconv/ftos.ha | 8 --------
strconv/itos.ha | 4 ----
strconv/numeric.ha | 3 ---
strconv/stof.ha | 5 -----
strconv/stof_data.ha | 3 ---
strconv/stoi.ha | 5 -----
strconv/stou.ha | 4 ----
strconv/types.ha | 5 -----
strconv/utos.ha | 4 ----
strings/concat.ha | 3 ---
strings/contains.ha | 4 ----
strings/dup.ha | 5 -----
strings/index.ha | 4 ----
strings/iter.ha | 6 ------
strings/pad.ha | 2 --
strings/replace.ha | 4 ----
strings/runes.ha | 2 --
strings/sub.ha | 5 -----
strings/suffix.ha | 4 ----
strings/template/template.ha | 2 --
strings/tokenize.ha | 5 -----
strings/trim.ha | 5 -----
strings/utf8.ha | 2 --
temp/+freebsd.ha | 5 -----
temp/+linux.ha | 5 -----
time/+freebsd/functions.ha | 3 ---
time/+linux/+aarch64.ha | 3 ---
time/+linux/+riscv64.ha | 3 ---
time/+linux/+x86_64.ha | 3 ---
time/+linux/functions.ha | 4 ----
time/arithm.ha | 3 ---
time/chrono/+freebsd.ha | 3 ---
time/chrono/+linux.ha | 3 ---
time/chrono/arithmetic.ha | 2 --
time/chrono/chronology.ha | 2 --
time/chrono/error.ha | 2 --
time/chrono/leapsec.ha | 2 --
time/chrono/timescale.ha | 2 --
time/chrono/timezone.ha | 2 --
time/chrono/tzdb.ha | 2 --
time/date/date.ha | 3 ---
time/date/daydate.ha | 4 ----
time/date/daytime.ha | 2 --
time/date/error.ha | 3 ---
time/date/format.ha | 4 ----
time/date/locality.ha | 3 ---
time/date/observe.ha | 2 --
time/date/parithm.ha | 4 ----
time/date/parse.ha | 4 ----
time/date/period.ha | 3 ---
time/date/reckon.ha | 2 --
time/date/tarithm.ha | 2 --
time/date/virtual.ha | 2 --
time/types.ha | 3 ---
types/arch+aarch64.ha | 3 ---
types/arch+riscv64.ha | 3 ---
types/arch+x86_64.ha | 3 ---
types/classes.ha | 3 ---
types/limits.ha | 4 ----
unix/+freebsd/getuid.ha | 2 --
unix/+freebsd/nice.ha | 3 ---
unix/+freebsd/pipe.ha | 3 ---
unix/+freebsd/setuid.ha | 3 ---
unix/+freebsd/umask.ha | 2 --
unix/+linux/getuid.ha | 2 --
unix/+linux/nice.ha | 3 ---
unix/+linux/pipe.ha | 2 --
unix/+linux/setuid.ha | 3 ---
unix/+linux/umask.ha | 3 ---
unix/hosts/+freebsd.ha | 3 ---
unix/hosts/+linux.ha | 3 ---
unix/hosts/hosts.ha | 5 -----
unix/hosts/test+test.ha | 2 --
unix/passwd/group.ha | 4 ----
unix/passwd/passwd.ha | 4 ----
unix/passwd/types.ha | 4 ----
unix/poll/+freebsd.ha | 3 ---
unix/poll/+linux.ha | 3 ---
unix/resolvconf/+freebsd.ha | 3 ---
unix/resolvconf/+linux.ha | 3 ---
unix/resolvconf/load.ha | 4 ----
unix/signal/+linux.ha | 2 --
unix/signal/types.ha | 3 ---
unix/tty/+freebsd/isatty.ha | 3 ---
unix/tty/+freebsd/open.ha | 3 ---
unix/tty/+freebsd/pty.ha | 2 --
unix/tty/+freebsd/termios.ha | 3 ---
unix/tty/+freebsd/winsize.ha | 3 ---
unix/tty/+linux/isatty.ha | 5 -----
unix/tty/+linux/open.ha | 5 -----
unix/tty/+linux/pty.ha | 2 --
unix/tty/+linux/termios.ha | 3 ---
unix/tty/+linux/winsize.ha | 4 ----
unix/tty/types.ha | 4 ----
uuid/uuid.ha | 4 ----
456 files changed, 3 insertions(+), 1550 deletions(-)
diff --git a/README.md b/README.md
index d94a9322..e0b2eee1 100644
--- a/README.md
+++ b/README.md
@@ -90,6 +90,9 @@ In short, you can write programs in Hare which use the standard library and
distribute those programs under any terms you wish. However, if you modify Hare
itself, you must share your changes as well.
+Note that you can figure out the contributors for a given file using
+`./contrib/contributors.sh path/to/file`.
+
The Hare specification is licensed much more strictly: CC-BY-ND. This license
allows free redistribution of the document, but prohibits derivative works
entirely. The purpose is to prevent the proliferation of vendor extensions to
diff --git a/ascii/ctype.ha b/ascii/ctype.ha
index 356ec215..ae2f5ac9 100644
--- a/ascii/ctype.ha
+++ b/ascii/ctype.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
def U: u8 = 0o1;
def L: u8 = 0o2;
def N: u8 = 0o4;
diff --git a/ascii/string.ha b/ascii/string.ha
index c006c1c1..368fed40 100644
--- a/ascii/string.ha
+++ b/ascii/string.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use encoding::utf8;
use strings;
diff --git a/ascii/valid.ha b/ascii/valid.ha
index 3479ef1b..51fcdeca 100644
--- a/ascii/valid.ha
+++ b/ascii/valid.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
-// (c) 2021 Drew Devault <sir@cmpwn.com>
use strings;
// Returns true if a rune is a valid ASCII character.
diff --git a/bufio/scanner.ha b/bufio/scanner.ha
index 31d4e188..96b9e3dc 100644
--- a/bufio/scanner.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2023 Alexey Yerin <yyp@disroot.org>
-// (c) 2021-2023 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use bytes;
use encoding::utf8;
use errors;
diff --git a/bufio/stream.ha b/bufio/stream.ha
index e787429d..5135ae98 100644
--- a/bufio/stream.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Byron Torres <b@torresjrjr.com>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use bytes;
use encoding::utf8;
use errors;
diff --git a/bytes/contains.ha b/bytes/contains.ha
index 295c25e7..8d2f9ddc 100644
--- a/bytes/contains.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
-
// Returns true if a byte slice contains a byte or a sequence of bytes.
export fn contains(haystack: []u8, needles: (u8 | []u8)...) bool = {
for (let i = 0z; i < len(needles); i += 1) {
diff --git a/bytes/equal.ha b/bytes/equal.ha
index 2d70c91b..6bcb67f8 100644
--- a/bytes/equal.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// Returns true if the two byte sequences are identical.
//
// This function should NOT be used with sensitive data such as cryptographic
diff --git a/bytes/index.ha b/bytes/index.ha
index ac3e581c..abdde4bf 100644
--- a/bytes/index.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
// Returns the offset of the first instance of "needle" in a "haystack" of
// bytes, or void if it is not found.
export fn index(haystack: []u8, needle: (u8 | []u8)) (size | void) = {
diff --git a/bytes/reverse.ha b/bytes/reverse.ha
index d0d7f5cf..fe418fd1 100644
--- a/bytes/reverse.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// Reverses a slice of bytes.
export fn reverse(b: []u8) void = {
if (len(b) == 0) {
diff --git a/bytes/tokenize.ha b/bytes/tokenize.ha
index 01ce6597..986899aa 100644
--- a/bytes/tokenize.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use types;
export type tokenizer = struct {
diff --git a/bytes/two_way.ha b/bytes/two_way.ha
index e37ea2c9..1d1e947c 100644
--- a/bytes/two_way.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
use types;
// Implements the so called Two-way string matching algorithm by Crochemore and
diff --git a/bytes/zero.ha b/bytes/zero.ha
index 5924094b..b4f67110 100644
--- a/bytes/zero.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use rt;
// Sets all bytes in a slice to zero. This is suitable for erasing private data
diff --git a/cmd/hare/main.ha b/cmd/hare/main.ha
index c4d67ce7..b1e4e02e 100644
--- a/cmd/hare/main.ha
+++ b/cmd/hare/main.ha
@@ -1,6 +1,3 @@
-// License: GPL-3.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use fmt;
use fs;
use getopt;
diff --git a/cmd/harec/context.ha b/cmd/harec/context.ha
index 30002db7..c4384284 100644
--- a/cmd/harec/context.ha
+++ b/cmd/harec/context.ha
@@ -1,6 +1,3 @@
-// License: GPL-3.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use io;
use hare::types;
use hare::unit;
diff --git a/cmd/harec/errors.ha b/cmd/harec/errors.ha
index d5b8f40f..9d38a8f0 100644
--- a/cmd/harec/errors.ha
+++ b/cmd/harec/errors.ha
@@ -1,6 +1,3 @@
-// License: GPL-3.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use bufio;
use fmt;
use hare::lex;
diff --git a/cmd/harec/gen.ha b/cmd/harec/gen.ha
index f078febe..5b9c9a1f 100644
--- a/cmd/harec/gen.ha
+++ b/cmd/harec/gen.ha
@@ -1,7 +1,3 @@
-// License: GPL-3.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use fmt;
use hare::ast;
use hare::lex;
diff --git a/cmd/harec/genutil.ha b/cmd/harec/genutil.ha
index 1cb61695..61e46241 100644
--- a/cmd/harec/genutil.ha
+++ b/cmd/harec/genutil.ha
@@ -1,5 +1,3 @@
-// License: GPL-3.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use fmt;
fn mklabel(ctx: *context, name: str) str = {
diff --git a/cmd/harec/main.ha b/cmd/harec/main.ha
index d3835090..4b0087ab 100644
--- a/cmd/harec/main.ha
+++ b/cmd/harec/main.ha
@@ -1,7 +1,3 @@
-// License: GPL-3.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use bufio;
use fmt;
use fs;
diff --git a/cmd/harec/qbe.ha b/cmd/harec/qbe.ha
index bc0fe289..564c55ce 100644
--- a/cmd/harec/qbe.ha
+++ b/cmd/harec/qbe.ha
@@ -1,6 +1,3 @@
-// License: GPL-3.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use fmt;
use io;
use hare::types;
diff --git a/cmd/harec/qtype.ha b/cmd/harec/qtype.ha
index 601a10c0..19abf6b4 100644
--- a/cmd/harec/qtype.ha
+++ b/cmd/harec/qtype.ha
@@ -1,6 +1,3 @@
-// License: GPL-3.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use fmt;
use hare::types;
use hare::types::{builtin};
diff --git a/cmd/haredoc/doc/color.ha b/cmd/haredoc/doc/color.ha
index 9b8497e0..bd11ebdd 100644
--- a/cmd/haredoc/doc/color.ha
+++ b/cmd/haredoc/doc/color.ha
@@ -1,5 +1,3 @@
-// License: GPL-3.0
-// (c) 2022 Byron Torres <b@torresjrjr.com>
use ascii;
use fmt;
use io;
diff --git a/cmd/haredoc/doc/hare.ha b/cmd/haredoc/doc/hare.ha
index 9b8e8333..cb318916 100644
--- a/cmd/haredoc/doc/hare.ha
+++ b/cmd/haredoc/doc/hare.ha
@@ -1,7 +1,3 @@
-// License: GPL-3.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use bufio;
use fmt;
use hare::ast;
diff --git a/cmd/haredoc/doc/html.ha b/cmd/haredoc/doc/html.ha
index 79488e48..4feda5eb 100644
--- a/cmd/haredoc/doc/html.ha
+++ b/cmd/haredoc/doc/html.ha
@@ -1,11 +1,3 @@
-// License: GPL-3.0
-// (c) 2021-2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2022 Byron Torres <b@torresjrjr.com>
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
-// (c) 2022 Umar Getagazov <umar@handlerug.me>
-
// Note: ast::ident should never have to be escaped
use encoding::utf8;
use fmt;
diff --git a/cmd/haredoc/doc/resolve.ha b/cmd/haredoc/doc/resolve.ha
index f113d6b5..40ea8644 100644
--- a/cmd/haredoc/doc/resolve.ha
+++ b/cmd/haredoc/doc/resolve.ha
@@ -1,7 +1,3 @@
-// License: GPL-3.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
use fmt;
use fs;
use hare::ast;
diff --git a/cmd/haredoc/doc/sort.ha b/cmd/haredoc/doc/sort.ha
index b3deb38f..57dc3f6f 100644
--- a/cmd/haredoc/doc/sort.ha
+++ b/cmd/haredoc/doc/sort.ha
@@ -1,6 +1,3 @@
-// License: GPL-3.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use hare::ast;
use sort;
use strings;
diff --git a/cmd/haredoc/doc/tty.ha b/cmd/haredoc/doc/tty.ha
index 744e582e..38a2dadc 100644
--- a/cmd/haredoc/doc/tty.ha
+++ b/cmd/haredoc/doc/tty.ha
@@ -1,7 +1,3 @@
-// License: GPL-3.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use ascii;
use bufio;
use fmt;
diff --git a/cmd/haredoc/doc/types.ha b/cmd/haredoc/doc/types.ha
index 8398f6e3..4d0fa156 100644
--- a/cmd/haredoc/doc/types.ha
+++ b/cmd/haredoc/doc/types.ha
@@ -1,6 +1,3 @@
-// License: GPL-3.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use fs;
use hare::ast;
use hare::lex;
diff --git a/cmd/haredoc/doc/util.ha b/cmd/haredoc/doc/util.ha
index 7b68b4c5..2d433b3f 100644
--- a/cmd/haredoc/doc/util.ha
+++ b/cmd/haredoc/doc/util.ha
@@ -1,6 +1,3 @@
-// License: GPL-3.0
-// (c) 2022 Byron Torres <b@torresjrjr.com>
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
use fmt;
use fs;
use hare::module;
diff --git a/cmd/haredoc/main.ha b/cmd/haredoc/main.ha
index c6919dce..202f9022 100644
--- a/cmd/haredoc/main.ha
+++ b/cmd/haredoc/main.ha
@@ -1,8 +1,3 @@
-// License: GPL-3.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
use cmd::haredoc::doc;
use fmt;
use fs;
diff --git a/cmd/haretype/main.ha b/cmd/haretype/main.ha
index 4e243a6e..0ffd161a 100644
--- a/cmd/haretype/main.ha
+++ b/cmd/haretype/main.ha
@@ -1,5 +1,3 @@
-// License: GPL-3.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use fmt;
use getopt;
use hare::ast;
diff --git a/crypto/+test/authenc_test.ha b/crypto/+test/authenc_test.ha
index 61c70426..98caf398 100644
--- a/crypto/+test/authenc_test.ha
+++ b/crypto/+test/authenc_test.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
use bytes;
use errors;
diff --git a/crypto/aes/aes+x86_64.ha b/crypto/aes/aes+x86_64.ha
index 029ca59f..228aeb93 100644
--- a/crypto/aes/aes+x86_64.ha
+++ b/crypto/aes/aes+x86_64.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
use crypto::cipher;
def MAXEXPKEYSZ: size = CT64_EXPKEYSZ;
diff --git a/crypto/aes/aes.ha b/crypto/aes/aes.ha
index 985496db..c8abbb3d 100644
--- a/crypto/aes/aes.ha
+++ b/crypto/aes/aes.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
use crypto::cipher;
def MAXEXPKEYSZ: size = CT64_EXPKEYSZ;
diff --git a/crypto/aes/aes_ct64.ha b/crypto/aes/aes_ct64.ha
index 985b7e53..ebb47cb7 100644
--- a/crypto/aes/aes_ct64.ha
+++ b/crypto/aes/aes_ct64.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Armin Preiml <apreiml@strohwolke.at>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// Constant time aes implementation optimized for 64bit CPUs.
// The code was ported from BearSSL, which contained the following notice:
//
diff --git a/crypto/aes/block.ha b/crypto/aes/block.ha
index 1ebc11ec..a175d49b 100644
--- a/crypto/aes/block.ha
+++ b/crypto/aes/block.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
use bytes;
use crypto::cipher;
diff --git a/crypto/aes/cbc+test.ha b/crypto/aes/cbc+test.ha
index ca61cf2e..ed444c7e 100644
--- a/crypto/aes/cbc+test.ha
+++ b/crypto/aes/cbc+test.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Armin Preiml <apreiml@strohwolke.at>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use crypto::cipher;
use bytes;
diff --git a/crypto/aes/ct64+test.ha b/crypto/aes/ct64+test.ha
index a8b11172..47690921 100644
--- a/crypto/aes/ct64+test.ha
+++ b/crypto/aes/ct64+test.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Armin Preiml <apreiml@strohwolke.at>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use crypto::cipher;
use bytes;
diff --git a/crypto/aes/ctr+test.ha b/crypto/aes/ctr+test.ha
index 41a8641d..b21b9046 100644
--- a/crypto/aes/ctr+test.ha
+++ b/crypto/aes/ctr+test.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
use bytes;
use crypto::cipher;
use errors;
diff --git a/crypto/aes/rt+test.ha b/crypto/aes/rt+test.ha
index fffdb8ba..6b93dd0f 100644
--- a/crypto/aes/rt+test.ha
+++ b/crypto/aes/rt+test.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Armin Preiml <apreiml@strohwolke.at>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use crypto::cipher;
use bytes;
diff --git a/crypto/aes/xts/+test.ha b/crypto/aes/xts/+test.ha
index 5c5fb781..86b77770 100644
--- a/crypto/aes/xts/+test.ha
+++ b/crypto/aes/xts/+test.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
use bytes;
@test fn oneblock() void = {
diff --git a/crypto/aes/xts/xts.ha b/crypto/aes/xts/xts.ha
index 1ad2daee..28bdcdb4 100644
--- a/crypto/aes/xts/xts.ha
+++ b/crypto/aes/xts/xts.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
use crypto::aes;
use bytes;
use crypto::cipher;
diff --git a/crypto/argon2/+test.ha b/crypto/argon2/+test.ha
index 0e997c21..db4caa6a 100644
--- a/crypto/argon2/+test.ha
+++ b/crypto/argon2/+test.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Armin Preiml <apreiml@strohwolke.at>
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
use bytes;
use encoding::hex;
use strings;
diff --git a/crypto/authenc.ha b/crypto/authenc.ha
index 004f18a1..7f4226fa 100644
--- a/crypto/authenc.ha
+++ b/crypto/authenc.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2023 Armin Preiml <apreiml@strohwolke.at>
-// (c) 2023 Drew DeVault <sir@cmpwn.com>
use bytes;
use crypto::chachapoly;
use crypto::math;
diff --git a/crypto/bcrypt/base64.ha b/crypto/bcrypt/base64.ha
index f9e2276b..8b06edbc 100644
--- a/crypto/bcrypt/base64.ha
+++ b/crypto/bcrypt/base64.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2011 The Go Authors
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
-//
// bcrypt uses a crappy variant of base64 with its own special alphabet and no
// padding. This file glues encoding::base64 to the bcrypt semantics.
use encoding::base64;
diff --git a/crypto/bcrypt/bcrypt.ha b/crypto/bcrypt/bcrypt.ha
index 9b22c713..aaba276d 100644
--- a/crypto/bcrypt/bcrypt.ha
+++ b/crypto/bcrypt/bcrypt.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2011 The Go Authors
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
-//
// This implementation is not great, but neither is this algorithm. Mostly
// ported from Go.
//
diff --git a/crypto/blake2b/+test.ha b/crypto/blake2b/+test.ha
index 6a670c43..036c0a8a 100644
--- a/crypto/blake2b/+test.ha
+++ b/crypto/blake2b/+test.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Armin Preiml <apreiml@strohwolke.at>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use bytes;
use encoding::hex;
use fmt;
diff --git a/crypto/blake2b/blake2b.ha b/crypto/blake2b/blake2b.ha
index 1a43ed59..36475856 100644
--- a/crypto/blake2b/blake2b.ha
+++ b/crypto/blake2b/blake2b.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Armin Preiml <apreiml@strohwolke.at>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use bytes;
use crypto::math;
use endian;
diff --git a/crypto/blake2b/vectors+test.ha b/crypto/blake2b/vectors+test.ha
index c929592f..bc4c05c7 100644
--- a/crypto/blake2b/vectors+test.ha
+++ b/crypto/blake2b/vectors+test.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
type vector = struct {
in: str,
key: str,
diff --git a/crypto/blowfish/blowfish.ha b/crypto/blowfish/blowfish.ha
index d8441de4..b06ed9a3 100644
--- a/crypto/blowfish/blowfish.ha
+++ b/crypto/blowfish/blowfish.ha
@@ -1,6 +1,4 @@
-// License: MPL-2.0
// License: MIT
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
// (c) 2010 The Go Authors. All rights reserved.
use bytes;
use crypto::cipher;
diff --git a/crypto/blowfish/const.ha b/crypto/blowfish/const.ha
index da331e0d..8882a6b9 100644
--- a/crypto/blowfish/const.ha
+++ b/crypto/blowfish/const.ha
@@ -1,6 +1,4 @@
-// License: MPL-2.0
// License: MIT
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
// (c) 2010 The Go Authors. All rights reserved.
const s0: [256]u32 = [
diff --git a/crypto/chacha/+test.ha b/crypto/chacha/+test.ha
index 0a66bb1f..94fe019f 100644
--- a/crypto/chacha/+test.ha
+++ b/crypto/chacha/+test.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
use bytes;
use crypto::cipher;
use io;
diff --git a/crypto/chacha/chacha20.ha b/crypto/chacha/chacha20.ha
index 3792d7c6..2f258d87 100644
--- a/crypto/chacha/chacha20.ha
+++ b/crypto/chacha/chacha20.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
use bytes;
use crypto::cipher;
use crypto::math::{rotl32, xor};
diff --git a/crypto/chachapoly/chachapoly.ha b/crypto/chachapoly/chachapoly.ha
index 4e1f4f9e..7aa6b2f8 100644
--- a/crypto/chachapoly/chachapoly.ha
+++ b/crypto/chachapoly/chachapoly.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2023 Armin Preiml <apreiml@strohwolke.at>
use bytes;
use crypto::chacha;
use crypto::mac;
diff --git a/crypto/chachapoly/encryption+test.ha b/crypto/chachapoly/encryption+test.ha
index 458afca2..ef891892 100644
--- a/crypto/chachapoly/encryption+test.ha
+++ b/crypto/chachapoly/encryption+test.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2023 Armin Preiml <apreiml@strohwolke.at>
use bytes;
use io;
use memio;
diff --git a/crypto/cipher/block.ha b/crypto/cipher/block.ha
index e39df528..d94dbe61 100644
--- a/crypto/cipher/block.ha
+++ b/crypto/cipher/block.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Armin Preiml <apreiml@strohwolke.at>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// An abstract interface for implementing block ciphers.
export type blockvtable = struct {
blocksz: size,
diff --git a/crypto/cipher/cbc.ha b/crypto/cipher/cbc.ha
index a6785396..9808809e 100644
--- a/crypto/cipher/cbc.ha
+++ b/crypto/cipher/cbc.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Armin Preiml <apreiml@strohwolke.at>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use crypto::math;
export type cbc_mode = struct {
diff --git a/crypto/cipher/cipher.ha b/crypto/cipher/cipher.ha
index ed605fd1..cef8195f 100644
--- a/crypto/cipher/cipher.ha
+++ b/crypto/cipher/cipher.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Armin Preiml <apreiml@strohwolke.at>
-
// Discards any state associated with a block or a stream cipher algorithm,
// securely erasing secret data from memory.
export fn finish(a: *block) void = {
diff --git a/crypto/cipher/ctr.ha b/crypto/cipher/ctr.ha
index 07be32e2..bc28eb27 100644
--- a/crypto/cipher/ctr.ha
+++ b/crypto/cipher/ctr.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
use bytes;
use crypto::math;
use crypto::math::{xor};
diff --git a/crypto/cipher/gcm.ha b/crypto/cipher/gcm.ha
index 870cfecd..34a877c2 100644
--- a/crypto/cipher/gcm.ha
+++ b/crypto/cipher/gcm.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
use bytes;
use crypto::math::{xor,eqslice};
use endian::{beputu64, beputu32, begetu32};
diff --git a/crypto/cipher/stream.ha b/crypto/cipher/stream.ha
index 56ebf3fa..e25b0d62 100644
--- a/crypto/cipher/stream.ha
+++ b/crypto/cipher/stream.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
use io;
use crypto::math::{xor};
diff --git a/crypto/curve25519/+test.ha b/crypto/curve25519/+test.ha
index a87de461..9c001b5f 100644
--- a/crypto/curve25519/+test.ha
+++ b/crypto/curve25519/+test.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
use bytes;
use fmt;
use io;
diff --git a/crypto/curve25519/curve25519.ha b/crypto/curve25519/curve25519.ha
index 9aa76172..398f6867 100644
--- a/crypto/curve25519/curve25519.ha
+++ b/crypto/curve25519/curve25519.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
use bytes;
// Implements the curve25519 elliptic curve
diff --git a/crypto/ed25519/+test.ha b/crypto/ed25519/+test.ha
index 05df6d45..906cf67f 100644
--- a/crypto/ed25519/+test.ha
+++ b/crypto/ed25519/+test.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Luke Champine <luke.champine@gmail.com>
use bytes;
use encoding::hex;
use strings;
diff --git a/crypto/ed25519/ed25519.ha b/crypto/ed25519/ed25519.ha
index c9f99871..42f480a7 100644
--- a/crypto/ed25519/ed25519.ha
+++ b/crypto/ed25519/ed25519.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Luke Champine <luke.champine@gmail.com>
-
// Implements the Ed25519 signature scheme.
//
// This implementation is a straightforward port of TweetNaCl,
diff --git a/crypto/ed25519/edwards25519.ha b/crypto/ed25519/edwards25519.ha
index 6fe93941..259d4f57 100644
--- a/crypto/ed25519/edwards25519.ha
+++ b/crypto/ed25519/edwards25519.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Luke Champine <luke.champine@gmail.com>
-
def FIELDSZ: size = 16;
type elem = [FIELDSZ]i64;
diff --git a/crypto/hkdf/+test.ha b/crypto/hkdf/+test.ha
index ae7f1cd1..39b4257a 100644
--- a/crypto/hkdf/+test.ha
+++ b/crypto/hkdf/+test.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2023 Armin Preiml <apreiml@strohwolke.at>
use bytes;
use crypto::sha1;
use crypto::sha256;
diff --git a/crypto/hkdf/hkdf.ha b/crypto/hkdf/hkdf.ha
index ed9fa338..1542d1e4 100644
--- a/crypto/hkdf/hkdf.ha
+++ b/crypto/hkdf/hkdf.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2023 Armin Preiml <apreiml@strohwolke.at>
use bytes;
use crypto::hmac;
use crypto::mac;
diff --git a/crypto/hmac/+test.ha b/crypto/hmac/+test.ha
index 4cd865f9..de93216d 100644
--- a/crypto/hmac/+test.ha
+++ b/crypto/hmac/+test.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Armin Preiml <apreiml@strohwolke.at>
use bytes;
use crypto::mac;
use crypto::sha1;
diff --git a/crypto/hmac/hmac.ha b/crypto/hmac/hmac.ha
index d2f5c5e1..22289345 100644
--- a/crypto/hmac/hmac.ha
+++ b/crypto/hmac/hmac.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Armin Preiml <apreiml@strohwolke.at>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use bytes;
use crypto::mac;
use hash;
diff --git a/crypto/hmac/sha1.ha b/crypto/hmac/sha1.ha
index 8112caa9..74bfb038 100644
--- a/crypto/hmac/sha1.ha
+++ b/crypto/hmac/sha1.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
use bytes;
use crypto::mac;
use crypto::sha1;
diff --git a/crypto/hmac/sha256.ha b/crypto/hmac/sha256.ha
index 3ba02980..db8f6375 100644
--- a/crypto/hmac/sha256.ha
+++ b/crypto/hmac/sha256.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
use bytes;
use crypto::mac;
use crypto::sha256;
diff --git a/crypto/keyderiv.ha b/crypto/keyderiv.ha
index 75edfe54..1304b44f 100644
--- a/crypto/keyderiv.ha
+++ b/crypto/keyderiv.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
use errors;
use crypto::argon2;
diff --git a/crypto/mac/mac.ha b/crypto/mac/mac.ha
index a7426b03..c05a002c 100644
--- a/crypto/mac/mac.ha
+++ b/crypto/mac/mac.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
use io;
// TODO: Use a vtable-based approach like io::stream
diff --git a/crypto/math/arithm.ha b/crypto/math/arithm.ha
index 433b58df..ff388b45 100644
--- a/crypto/math/arithm.ha
+++ b/crypto/math/arithm.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
-//
// The following code was initially ported from BearSSL.
//
// Copyright (c) 2017 Thomas Pornin <pornin@bolet.org>
diff --git a/crypto/math/bits.ha b/crypto/math/bits.ha
index 0c697e67..cf377bda 100644
--- a/crypto/math/bits.ha
+++ b/crypto/math/bits.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Armin Preiml <apreiml@strohwolke.at>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
-
// Rotates a 32-bit unsigned integer left by k bits. k may be negative to rotate
// right instead, or see [[rotr32]].
export fn rotl32(x: u32, k: int) u32 = {
diff --git a/crypto/poly1305/+test.ha b/crypto/poly1305/+test.ha
index e6661d95..29b88f5e 100644
--- a/crypto/poly1305/+test.ha
+++ b/crypto/poly1305/+test.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
use bytes;
use crypto::mac;
use encoding::hex;
diff --git a/crypto/poly1305/poly1305.ha b/crypto/poly1305/poly1305.ha
index a396c61c..8b4932f3 100644
--- a/crypto/poly1305/poly1305.ha
+++ b/crypto/poly1305/poly1305.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
-
// This implementation was ported from Loup Vaillant's monocypher project.
use bytes;
diff --git a/crypto/random/+freebsd.ha b/crypto/random/+freebsd.ha
index 597f153d..bb551fc7 100644
--- a/crypto/random/+freebsd.ha
+++ b/crypto/random/+freebsd.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use rt;
use io;
diff --git a/crypto/random/+linux.ha b/crypto/random/+linux.ha
index 597f153d..bb551fc7 100644
--- a/crypto/random/+linux.ha
+++ b/crypto/random/+linux.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use rt;
use io;
diff --git a/crypto/random/random.ha b/crypto/random/random.ha
index 099f7b61..c777b2cd 100644
--- a/crypto/random/random.ha
+++ b/crypto/random/random.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use io;
use rt;
diff --git a/crypto/rsa/+test/core_test.ha b/crypto/rsa/+test/core_test.ha
index f09a7900..39105cda 100644
--- a/crypto/rsa/+test/core_test.ha
+++ b/crypto/rsa/+test/core_test.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
use bytes;
use crypto::bigint::*;
diff --git a/crypto/rsa/+test/keys_test.ha b/crypto/rsa/+test/keys_test.ha
index f9ca4ca8..ce794694 100644
--- a/crypto/rsa/+test/keys_test.ha
+++ b/crypto/rsa/+test/keys_test.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
use bytes;
type keypair = struct {
diff --git a/crypto/rsa/+test/pkcs1_test.ha b/crypto/rsa/+test/pkcs1_test.ha
index 82e8d5e7..e01f0e42 100644
--- a/crypto/rsa/+test/pkcs1_test.ha
+++ b/crypto/rsa/+test/pkcs1_test.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
use bytes;
use crypto::sha1;
use crypto::sha256;
diff --git a/crypto/rsa/errors.ha b/crypto/rsa/errors.ha
index e5e17a91..0876f5d3 100644
--- a/crypto/rsa/errors.ha
+++ b/crypto/rsa/errors.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
use errors;
// Signature verification failed.
diff --git a/crypto/rsa/keys.ha b/crypto/rsa/keys.ha
index b2d1dec6..9c5fc89f 100644
--- a/crypto/rsa/keys.ha
+++ b/crypto/rsa/keys.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
use bytes;
use crypto::bigint;
use crypto::math::*;
diff --git a/crypto/rsa/pkcs1.ha b/crypto/rsa/pkcs1.ha
index ac963362..52dec47b 100644
--- a/crypto/rsa/pkcs1.ha
+++ b/crypto/rsa/pkcs1.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
use bufio;
use crypto::sha1;
use crypto::sha256;
diff --git a/crypto/salsa/+test.ha b/crypto/salsa/+test.ha
index 5689b9c6..e9e41052 100644
--- a/crypto/salsa/+test.ha
+++ b/crypto/salsa/+test.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Armin Preiml <apreiml@strohwolke.at>
use bytes;
use crypto::cipher;
use io;
diff --git a/crypto/salsa/salsa20.ha b/crypto/salsa/salsa20.ha
index 688a1643..2aa3cff5 100644
--- a/crypto/salsa/salsa20.ha
+++ b/crypto/salsa/salsa20.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Armin Preiml <apreiml@strohwolke.at>
use bytes;
use crypto::cipher;
use crypto::math::{rotl32, xor};
diff --git a/crypto/sha1/+test.ha b/crypto/sha1/+test.ha
index 5770e2c6..5a826b1c 100644
--- a/crypto/sha1/+test.ha
+++ b/crypto/sha1/+test.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Kiëd Llaentenn <kiedtl@tilde.team>
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
use fmt;
use hash;
use strings;
diff --git a/crypto/sha1/sha1.ha b/crypto/sha1/sha1.ha
index 5df7fd7a..013d9413 100644
--- a/crypto/sha1/sha1.ha
+++ b/crypto/sha1/sha1.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Armin Preiml <apreiml@strohwolke.at>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Kiëd Llaentenn <kiedtl@tilde.team>
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
use hash;
use io;
use bytes;
diff --git a/crypto/sha256/+test.ha b/crypto/sha256/+test.ha
index 935388c0..317baa6b 100644
--- a/crypto/sha256/+test.ha
+++ b/crypto/sha256/+test.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Kiëd Llaentenn <kiedtl@tilde.team>
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
use fmt;
use hash;
use strings;
diff --git a/crypto/sha256/sha256.ha b/crypto/sha256/sha256.ha
index 4ee3aedc..358262d7 100644
--- a/crypto/sha256/sha256.ha
+++ b/crypto/sha256/sha256.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Kiëd Llaentenn <kiedtl@tilde.team>
use crypto::math;
use bytes;
use endian;
diff --git a/crypto/sha512/+test.ha b/crypto/sha512/+test.ha
index 0a63c93d..a1566ac8 100644
--- a/crypto/sha512/+test.ha
+++ b/crypto/sha512/+test.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Kiëd Llaentenn <kiedtl@tilde.team>
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
use fmt;
use hash;
use strings;
diff --git a/crypto/sha512/sha512.ha b/crypto/sha512/sha512.ha
index c7a75a4c..166425b7 100644
--- a/crypto/sha512/sha512.ha
+++ b/crypto/sha512/sha512.ha
@@ -1,9 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Armin Preiml <apreiml@strohwolke.at>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Kiëd Llaentenn <kiedtl@tilde.team>
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
use bytes;
use crypto::math;
use endian;
diff --git a/crypto/x25519/+test.ha b/crypto/x25519/+test.ha
index 3107736e..15945471 100644
--- a/crypto/x25519/+test.ha
+++ b/crypto/x25519/+test.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
use bytes;
use encoding::hex;
use crypto::random;
diff --git a/crypto/x25519/x25519.ha b/crypto/x25519/x25519.ha
index 4cc6de1d..3498dad3 100644
--- a/crypto/x25519/x25519.ha
+++ b/crypto/x25519/x25519.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Armin Preiml <apreiml@strohwolke.at>
use crypto::curve25519;
// Type for private, public or shared keys.
diff --git a/dirs/xdg.ha b/dirs/xdg.ha
index 0ceff666..4f198c67 100644
--- a/dirs/xdg.ha
+++ b/dirs/xdg.ha
@@ -1,9 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
-// (c) 2022 Jon Eskin <eskinjp@gmail.com>
-// (c) 2022 Simon Ser <contact@emersion.fr>
use errors;
use fmt;
use fs;
diff --git a/encoding/base32/base32.ha b/encoding/base32/base32.ha
index bc43a9cd..fa0861f5 100644
--- a/encoding/base32/base32.ha
+++ b/encoding/base32/base32.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Ajay R <ar324@protonmail.com>
use ascii;
use bytes;
use errors;
diff --git a/encoding/base64/base64.ha b/encoding/base64/base64.ha
index b091851c..83a0f020 100644
--- a/encoding/base64/base64.ha
+++ b/encoding/base64/base64.ha
@@ -1,10 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Ajay R <ar324@protonmail.com>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Steven Guikal <void@fluix.one>
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
-// (c) 2023 Armin Preiml <apreiml@strohwolke.at>
use ascii;
use bytes;
use errors;
diff --git a/encoding/hex/hex.ha b/encoding/hex/hex.ha
index 8e81d6fb..7cecad2c 100644
--- a/encoding/hex/hex.ha
+++ b/encoding/hex/hex.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
use ascii;
use bytes;
use errors;
diff --git a/encoding/pem/+test.ha b/encoding/pem/+test.ha
index dd7f1a39..b3970f4d 100644
--- a/encoding/pem/+test.ha
+++ b/encoding/pem/+test.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
use bytes;
use io;
use fmt;
diff --git a/encoding/pem/pem.ha b/encoding/pem/pem.ha
index e1176de1..33fcb1c3 100644
--- a/encoding/pem/pem.ha
+++ b/encoding/pem/pem.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
use ascii;
use bufio;
use encoding::base64;
diff --git a/encoding/utf8/decode.ha b/encoding/utf8/decode.ha
index 258bb9f7..66b5da48 100644
--- a/encoding/utf8/decode.ha
+++ b/encoding/utf8/decode.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
fn toutf8(in: str) []u8 = *(&in: *[]u8);
fn fromtagged(in: (str | []u8)) []u8 = match (in) {
diff --git a/encoding/utf8/encode.ha b/encoding/utf8/encode.ha
index a8a8a968..8e58dcdd 100644
--- a/encoding/utf8/encode.ha
+++ b/encoding/utf8/encode.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// Encodes a rune as UTF-8 and returns the result as a slice. The return value
// is statically allocated, and will not be consistent after subsequent calls to
// encoderune.
diff --git a/encoding/utf8/rune.ha b/encoding/utf8/rune.ha
index ca5337c6..ee12dd6c 100644
--- a/encoding/utf8/rune.ha
+++ b/encoding/utf8/rune.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
type rsize = struct {
mask: u8,
result: u8,
diff --git a/endian/big.ha b/endian/big.ha
index 9766cc89..f1eec0b4 100644
--- a/endian/big.ha
+++ b/endian/big.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Armin Weigl <tb46305@gmail.com>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// Reads a u16 from a buffer in big-endian order.
export fn begetu16(buf: []u8) u16 = {
return
diff --git a/endian/endian.ha b/endian/endian.ha
index d910de44..7727eb01 100644
--- a/endian/endian.ha
+++ b/endian/endian.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Armin Weigl <tb46305@gmail.com>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// The set of functions used for endian-aware encoding.
export type endian = struct {
getu16: *fn(buf: []u8) u16,
diff --git a/endian/host+aarch64.ha b/endian/host+aarch64.ha
index 96c20712..e6c260b5 100644
--- a/endian/host+aarch64.ha
+++ b/endian/host+aarch64.ha
@@ -1,5 +1,2 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// The [[endian]] functions which map to the host architecture.
export const host: *endian = &little;
diff --git a/endian/host+riscv64.ha b/endian/host+riscv64.ha
index 96c20712..e6c260b5 100644
--- a/endian/host+riscv64.ha
+++ b/endian/host+riscv64.ha
@@ -1,5 +1,2 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// The [[endian]] functions which map to the host architecture.
export const host: *endian = &little;
diff --git a/endian/host+x86_64.ha b/endian/host+x86_64.ha
index 96c20712..e6c260b5 100644
--- a/endian/host+x86_64.ha
+++ b/endian/host+x86_64.ha
@@ -1,5 +1,2 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// The [[endian]] functions which map to the host architecture.
export const host: *endian = &little;
diff --git a/endian/little.ha b/endian/little.ha
index 9bcc4482..1bf79d83 100644
--- a/endian/little.ha
+++ b/endian/little.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Armin Weigl <tb46305@gmail.com>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// Reads a u16 from a buffer in little-endian order.
export fn legetu16(buf: []u8) u16 = {
return
diff --git a/endian/network.ha b/endian/network.ha
index 6b3e57d2..bc714381 100644
--- a/endian/network.ha
+++ b/endian/network.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// Converts a u16 from host order to network order.
export fn htonu16(in: u16) u16 = {
if (host == &big) return in;
diff --git a/errors/common.ha b/errors/common.ha
index 2fdeee8c..ca1ef16d 100644
--- a/errors/common.ha
+++ b/errors/common.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Noah Altunian <nbaltunian@gmail.com>
-
// The requested resource is not available.
export type busy = !void;
diff --git a/errors/opaque.ha b/errors/opaque.ha
index ebde4fb8..49dadd1c 100644
--- a/errors/opaque.ha
+++ b/errors/opaque.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
// An "opaque" error is used as a portable error type for an underlying error
// which is implementation-specific. It provides a function which can be used to
// produce a string describing the error, and a small storage area for arbitrary
diff --git a/errors/rt.ha b/errors/rt.ha
index 8cda13cc..bf0d7069 100644
--- a/errors/rt.ha
+++ b/errors/rt.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use rt;
// Wraps an [[rt::errno]] to produce an [[errors::opaque_]]. This is a non-portable
diff --git a/errors/string.ha b/errors/string.ha
index ecb8c2ad..a463ae4a 100644
--- a/errors/string.ha
+++ b/errors/string.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
// Converts an [[error]] into a human-friendly string representation.
//
// Note that this strerror implementation lacks any context-specific information
diff --git a/fmt/fmt.ha b/fmt/fmt.ha
index 1bffdb24..f10c2596 100644
--- a/fmt/fmt.ha
+++ b/fmt/fmt.ha
@@ -1,10 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Andri Yngvason <andri@yngvason.is>
-// (c) 2021-2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Byron Torres <b@torresjrjr.com>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use ascii;
use encoding::utf8;
use io;
diff --git a/fnmatch/+test.ha b/fnmatch/+test.ha
index 488d96e2..e0b41dd5 100644
--- a/fnmatch/+test.ha
+++ b/fnmatch/+test.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-
type testcase = (str, str, bool, []flag);
const testcases: [_]testcase = [
diff --git a/fnmatch/fnmatch.ha b/fnmatch/fnmatch.ha
index 999558ba..d54986ec 100644
--- a/fnmatch/fnmatch.ha
+++ b/fnmatch/fnmatch.ha
@@ -1,10 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Miccah Castorina <contact@miccah.io>
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
use ascii;
use errors;
use strings;
diff --git a/format/elf/arch+aarch64.ha b/format/elf/arch+aarch64.ha
index 3bb4d40d..8bbbe527 100644
--- a/format/elf/arch+aarch64.ha
+++ b/format/elf/arch+aarch64.ha
@@ -1,5 +1,2 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// The machine (architecture) of the target.
export def TARGET_MACHINE: elf_machine = elf_machine::AARCH64;
diff --git a/format/elf/arch+riscv64.ha b/format/elf/arch+riscv64.ha
index 2e72d9be..b7dd4d6e 100644
--- a/format/elf/arch+riscv64.ha
+++ b/format/elf/arch+riscv64.ha
@@ -1,5 +1,2 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// The machine (architecture) of the target.
export def TARGET_MACHINE: elf_machine = elf_machine::RISCV;
diff --git a/format/elf/arch+x86_64.ha b/format/elf/arch+x86_64.ha
index 5cfb0195..d0992f96 100644
--- a/format/elf/arch+x86_64.ha
+++ b/format/elf/arch+x86_64.ha
@@ -1,5 +1,2 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// The machine (architecture) of the target.
export def TARGET_MACHINE: elf_machine = elf_machine::X86_64;
diff --git a/format/elf/platform+freebsd.ha b/format/elf/platform+freebsd.ha
index 6364f508..3361f3b7 100644
--- a/format/elf/platform+freebsd.ha
+++ b/format/elf/platform+freebsd.ha
@@ -1,5 +1,2 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// The ABI of the target.
export def TARGET_ABI: ident_abi = ident_abi::SYSV;
diff --git a/format/elf/platform+linux.ha b/format/elf/platform+linux.ha
index 6364f508..3361f3b7 100644
--- a/format/elf/platform+linux.ha
+++ b/format/elf/platform+linux.ha
@@ -1,5 +1,2 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// The ABI of the target.
export def TARGET_ABI: ident_abi = ident_abi::SYSV;
diff --git a/format/elf/types.ha b/format/elf/types.ha
index 41ecdb4a..5a489475 100644
--- a/format/elf/types.ha
+++ b/format/elf/types.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Mykyta Holubakha <hilobakho@gmail.com>
-
// TODO:
// - Flesh out ELF32 structures
diff --git a/format/ini/+test.ha b/format/ini/+test.ha
index 31488e57..c215b973 100644
--- a/format/ini/+test.ha
+++ b/format/ini/+test.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Alexey Yerin <yyp@disroot.org>
use io;
use memio;
use strings;
diff --git a/format/ini/scan.ha b/format/ini/scan.ha
index d9480022..736bf5cd 100644
--- a/format/ini/scan.ha
+++ b/format/ini/scan.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
use bufio;
use encoding::utf8;
use fmt;
diff --git a/format/ini/types.ha b/format/ini/types.ha
index d67ed0de..d8e79e19 100644
--- a/format/ini/types.ha
+++ b/format/ini/types.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use encoding::utf8;
use fmt;
use io;
diff --git a/format/tar/reader.ha b/format/tar/reader.ha
index d942e81d..caefcc84 100644
--- a/format/tar/reader.ha
+++ b/format/tar/reader.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
use bytes;
use endian;
use io;
diff --git a/format/tar/types.ha b/format/tar/types.ha
index 025008e6..5fa70be0 100644
--- a/format/tar/types.ha
+++ b/format/tar/types.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
use io;
// The size of each block in a tar file.
diff --git a/fs/fs.ha b/fs/fs.ha
index bd80d5ba..8756fa8b 100644
--- a/fs/fs.ha
+++ b/fs/fs.ha
@@ -1,11 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021-2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
-// (c) 2021 Umar Getagazov <umar@handlerug.me>
-// (c) 2022 Jon Eskin <eskinjp@gmail.com>
use errors;
use io;
use path;
diff --git a/fs/types.ha b/fs/types.ha
index 384da3f3..693fda62 100644
--- a/fs/types.ha
+++ b/fs/types.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Jon Eskin <eskinjp@gmail.com>
use errors;
use io;
use path;
diff --git a/fs/util.ha b/fs/util.ha
index 45411ae8..cc6d3cac 100644
--- a/fs/util.ha
+++ b/fs/util.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
use io;
use path;
use strings;
diff --git a/getopt/getopts.ha b/getopt/getopts.ha
index 573936d8..81e98b52 100644
--- a/getopt/getopts.ha
+++ b/getopt/getopts.ha
@@ -1,10 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Byron Torres <b@torresjrjr.com>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Jonathan Halmen <slowjo@halmen.xyz>
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
use fmt;
use io;
use os;
diff --git a/glob/glob.ha b/glob/glob.ha
index 36d40540..4dc1abd3 100644
--- a/glob/glob.ha
+++ b/glob/glob.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Yasumasa Tada <ytada@spartan.dev>
use fnmatch;
use fs;
use io;
diff --git a/hare/ast/decl.ha b/hare/ast/decl.ha
index 955639d9..d57be08f 100644
--- a/hare/ast/decl.ha
+++ b/hare/ast/decl.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use hare::lex;
// A constant declaration.
diff --git a/hare/ast/expr.ha b/hare/ast/expr.ha
index b7d6d61a..981ab5e8 100644
--- a/hare/ast/expr.ha
+++ b/hare/ast/expr.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
use hare::lex;
// An identifier access expression.
diff --git a/hare/ast/ident.ha b/hare/ast/ident.ha
index bfe3f211..835978bf 100644
--- a/hare/ast/ident.ha
+++ b/hare/ast/ident.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use strings;
// Identifies a single object, e.g. foo::bar::baz.
diff --git a/hare/ast/import.ha b/hare/ast/import.ha
index a5dbd8c6..380f9211 100644
--- a/hare/ast/import.ha
+++ b/hare/ast/import.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use hare::lex;
// Variants of the import statement
diff --git a/hare/ast/type.ha b/hare/ast/type.ha
index e3c2ee53..2821bf4f 100644
--- a/hare/ast/type.ha
+++ b/hare/ast/type.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use hare::lex;
// A type alias.
diff --git a/hare/ast/unit.ha b/hare/ast/unit.ha
index 3bed943f..2eb107e1 100644
--- a/hare/ast/unit.ha
+++ b/hare/ast/unit.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
// A sub-unit, typically representing a single source file.
export type subunit = struct {
imports: []import,
diff --git a/hare/lex/+test.ha b/hare/lex/+test.ha
index db2475db..02577b75 100644
--- a/hare/lex/+test.ha
+++ b/hare/lex/+test.ha
@@ -1,10 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Armin Weigl <tb46305@gmail.com>
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Sudipto Mallick <smlckz@disroot.org>
use fmt;
use io;
use io::{mode};
diff --git a/hare/lex/lex.ha b/hare/lex/lex.ha
index 851ae25b..0e7d298b 100644
--- a/hare/lex/lex.ha
+++ b/hare/lex/lex.ha
@@ -1,10 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Armin Weigl <tb46305@gmail.com>
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Sudipto Mallick <smlckz@disroot.org>
use ascii;
use bufio;
use encoding::utf8;
diff --git a/hare/lex/token.ha b/hare/lex/token.ha
index 26fff35d..133850f8 100644
--- a/hare/lex/token.ha
+++ b/hare/lex/token.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use encoding::utf8;
use strings;
diff --git a/hare/parse/+test/expr_test.ha b/hare/parse/+test/expr_test.ha
index 84e47d7b..c540328d 100644
--- a/hare/parse/+test/expr_test.ha
+++ b/hare/parse/+test/expr_test.ha
@@ -1,10 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
-
@test fn assignment() void = {
roundtrip("export fn main() void = {
x = y;
diff --git a/hare/parse/+test/ident_test.ha b/hare/parse/+test/ident_test.ha
index 77dc272d..437df347 100644
--- a/hare/parse/+test/ident_test.ha
+++ b/hare/parse/+test/ident_test.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use hare::ast;
use hare::lex;
use hare::lex::{ltok};
diff --git a/hare/parse/+test/loc.ha b/hare/parse/+test/loc.ha
index 98888c5e..80994386 100644
--- a/hare/parse/+test/loc.ha
+++ b/hare/parse/+test/loc.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use encoding::utf8;
use fmt;
use hare::ast;
diff --git a/hare/parse/+test/roundtrip.ha b/hare/parse/+test/roundtrip.ha
index e1f93b53..d35a5b2e 100644
--- a/hare/parse/+test/roundtrip.ha
+++ b/hare/parse/+test/roundtrip.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
use fmt;
use hare::ast;
use hare::lex;
diff --git a/hare/parse/+test/types.ha b/hare/parse/+test/types.ha
index 073c9276..57eb2a1c 100644
--- a/hare/parse/+test/types.ha
+++ b/hare/parse/+test/types.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
@test fn struct_union() void = {
roundtrip("export type foo = struct {
@offset(void) x: int,
diff --git a/hare/parse/+test/unit_test.ha b/hare/parse/+test/unit_test.ha
index 27310da7..eb5d5162 100644
--- a/hare/parse/+test/unit_test.ha
+++ b/hare/parse/+test/unit_test.ha
@@ -1,9 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Armin Weigl <tb46305@gmail.com>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
use hare::ast;
use hare::lex;
use io::{mode};
diff --git a/hare/parse/decl.ha b/hare/parse/decl.ha
index fca5074e..7bc223d6 100644
--- a/hare/parse/decl.ha
+++ b/hare/parse/decl.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use ascii;
use hare::ast;
use hare::lex::{ltok};
diff --git a/hare/parse/doc/doc.ha b/hare/parse/doc/doc.ha
index f9f4c732..5bc381f0 100644
--- a/hare/parse/doc/doc.ha
+++ b/hare/parse/doc/doc.ha
@@ -1,9 +1,3 @@
-// License: GPL-3.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
-// (c) 2022 Umar Getagazov <umar@handlerug.me>
use ascii;
use bufio;
use encoding::utf8;
diff --git a/hare/parse/expr.ha b/hare/parse/expr.ha
index 6d99c99a..8bf397ad 100644
--- a/hare/parse/expr.ha
+++ b/hare/parse/expr.ha
@@ -1,9 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
use hare::ast;
use hare::lex::{ltok};
use hare::lex;
diff --git a/hare/parse/ident.ha b/hare/parse/ident.ha
index 010ca537..f12bc4bc 100644
--- a/hare/parse/ident.ha
+++ b/hare/parse/ident.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use hare::ast;
use hare::lex::{ltok};
use hare::lex;
diff --git a/hare/parse/import.ha b/hare/parse/import.ha
index b2b6ba3a..4570d6f6 100644
--- a/hare/parse/import.ha
+++ b/hare/parse/import.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use hare::ast;
use hare::lex;
use hare::lex::{ltok};
diff --git a/hare/parse/parse.ha b/hare/parse/parse.ha
index 18a6e823..16da397f 100644
--- a/hare/parse/parse.ha
+++ b/hare/parse/parse.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Byron Torres <b@torresjrjr.com>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use fmt;
use hare::lex::{ltok};
use hare::lex;
diff --git a/hare/parse/type.ha b/hare/parse/type.ha
index 0b4371a9..ec64bfbf 100644
--- a/hare/parse/type.ha
+++ b/hare/parse/type.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use hare::ast;
use hare::ast::{builtin_type};
use hare::lex;
diff --git a/hare/parse/unit.ha b/hare/parse/unit.ha
index cd9e8b31..5a8942c0 100644
--- a/hare/parse/unit.ha
+++ b/hare/parse/unit.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use hare::ast;
use hare::lex;
diff --git a/hare/types/+test.ha b/hare/types/+test.ha
index a40d2b69..ca727e8b 100644
--- a/hare/types/+test.ha
+++ b/hare/types/+test.ha
@@ -1,9 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
use fmt;
use hare::ast;
use hare::lex;
diff --git a/hare/types/arch.ha b/hare/types/arch.ha
index 0ac28267..a40c0023 100644
--- a/hare/types/arch.ha
+++ b/hare/types/arch.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// Configuration for a specific architecture.
export type arch = struct {
_int: size,
diff --git a/hare/types/builtins.ha b/hare/types/builtins.ha
index f515c64a..e023b476 100644
--- a/hare/types/builtins.ha
+++ b/hare/types/builtins.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// IDs are precomputed, but a test verifies that they match what they would be
// if computed at runtime
diff --git a/hare/types/class.ha b/hare/types/class.ha
index 4909a573..554dd48f 100644
--- a/hare/types/class.ha
+++ b/hare/types/class.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
// Returns true if the given type is a signed type.
export fn is_signed(ty: const *_type) bool = {
match (ty.repr) {
diff --git a/hare/types/hash.ha b/hare/types/hash.ha
index 5df0f580..cf0b270c 100644
--- a/hare/types/hash.ha
+++ b/hare/types/hash.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use endian;
use hash::fnv;
use hash;
diff --git a/hare/types/lookup.ha b/hare/types/lookup.ha
index f33c24b0..60cb2db3 100644
--- a/hare/types/lookup.ha
+++ b/hare/types/lookup.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use hare::ast;
// Unwraps a type which may be aliased and returns the underlying type.
diff --git a/hare/types/store.ha b/hare/types/store.ha
index 5db42276..ef5a0b1d 100644
--- a/hare/types/store.ha
+++ b/hare/types/store.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use hare::ast;
use sort;
diff --git a/hare/types/types.ha b/hare/types/types.ha
index 88c6cc99..4a77980e 100644
--- a/hare/types/types.ha
+++ b/hare/types/types.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use hare::ast;
// A type alias.
diff --git a/hare/unit/+test.ha b/hare/unit/+test.ha
index 045fa2e3..60585da3 100644
--- a/hare/unit/+test.ha
+++ b/hare/unit/+test.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use hare::ast;
use hare::lex;
use hare::parse;
diff --git a/hare/unit/check.ha b/hare/unit/check.ha
index f83ff15b..405f5690 100644
--- a/hare/unit/check.ha
+++ b/hare/unit/check.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use hare::ast;
use hare::types;
diff --git a/hare/unit/context.ha b/hare/unit/context.ha
index 7f1744ee..6655299e 100644
--- a/hare/unit/context.ha
+++ b/hare/unit/context.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use hare::types;
type context = struct {
diff --git a/hare/unit/errors.ha b/hare/unit/errors.ha
index aa2df5f5..8de53df9 100644
--- a/hare/unit/errors.ha
+++ b/hare/unit/errors.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use hare::types;
// TODO: More errors
diff --git a/hare/unit/expr.ha b/hare/unit/expr.ha
index ea8dd75b..89be43b6 100644
--- a/hare/unit/expr.ha
+++ b/hare/unit/expr.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use hare::ast;
use hare::lex;
use hare::types;
diff --git a/hare/unit/process.ha b/hare/unit/process.ha
index 34b93041..26d12079 100644
--- a/hare/unit/process.ha
+++ b/hare/unit/process.ha
@@ -1,9 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
use hare::ast;
use hare::lex;
use hare::types;
diff --git a/hare/unit/scan.ha b/hare/unit/scan.ha
index 5a3fbb4b..1aa96c35 100644
--- a/hare/unit/scan.ha
+++ b/hare/unit/scan.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use hare::ast;
use hare::types;
diff --git a/hare/unit/scope.ha b/hare/unit/scope.ha
index e4ea28a1..41c49ed5 100644
--- a/hare/unit/scope.ha
+++ b/hare/unit/scope.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use hare::ast;
use hare::types;
use hash::fnv;
diff --git a/hare/unit/unit.ha b/hare/unit/unit.ha
index dca71736..6e3615e5 100644
--- a/hare/unit/unit.ha
+++ b/hare/unit/unit.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use hare::ast;
use hare::lex;
use hare::types;
diff --git a/hare/unparse/decl.ha b/hare/unparse/decl.ha
index 1b34ce23..c104805d 100644
--- a/hare/unparse/decl.ha
+++ b/hare/unparse/decl.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
use io;
use fmt;
use hare::ast;
diff --git a/hare/unparse/expr.ha b/hare/unparse/expr.ha
index 272dcb3f..eade61eb 100644
--- a/hare/unparse/expr.ha
+++ b/hare/unparse/expr.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
use io;
use fmt;
use hare::ast;
diff --git a/hare/unparse/ident.ha b/hare/unparse/ident.ha
index 8438b8aa..b1f44296 100644
--- a/hare/unparse/ident.ha
+++ b/hare/unparse/ident.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use fmt;
use hare::ast;
use io;
diff --git a/hare/unparse/import.ha b/hare/unparse/import.ha
index 983bf2cf..b80fdf72 100644
--- a/hare/unparse/import.ha
+++ b/hare/unparse/import.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use fmt;
use io;
use hare::ast;
diff --git a/hare/unparse/type.ha b/hare/unparse/type.ha
index 2dae8cc9..b3dfe720 100644
--- a/hare/unparse/type.ha
+++ b/hare/unparse/type.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use fmt;
use io;
use hare::ast;
diff --git a/hare/unparse/unit.ha b/hare/unparse/unit.ha
index a88a04cc..55cc7744 100644
--- a/hare/unparse/unit.ha
+++ b/hare/unparse/unit.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use io;
use fmt;
use hare::ast;
diff --git a/hare/unparse/util.ha b/hare/unparse/util.ha
index 086304b7..b265edd0 100644
--- a/hare/unparse/util.ha
+++ b/hare/unparse/util.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use io;
use fmt;
diff --git a/hash/adler32/adler32.ha b/hash/adler32/adler32.ha
index be2bb18c..f72a0df3 100644
--- a/hash/adler32/adler32.ha
+++ b/hash/adler32/adler32.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Kiëd Llaentenn <kiedtl@tilde.team>
use endian;
use hash;
use io;
diff --git a/hash/crc16/crc16.ha b/hash/crc16/crc16.ha
index c2a608bf..c0ca1319 100644
--- a/hash/crc16/crc16.ha
+++ b/hash/crc16/crc16.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Kiëd Llaentenn <kiedtl@tilde.team>
use endian;
use hash;
use io;
diff --git a/hash/crc32/crc32.ha b/hash/crc32/crc32.ha
index dc2951d3..478fe142 100644
--- a/hash/crc32/crc32.ha
+++ b/hash/crc32/crc32.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Kiëd Llaentenn <kiedtl@tilde.team>
use endian;
use hash;
use io;
diff --git a/hash/crc64/crc64.ha b/hash/crc64/crc64.ha
index 6f05282b..1aa2145c 100644
--- a/hash/crc64/crc64.ha
+++ b/hash/crc64/crc64.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Kiëd Llaentenn <kiedtl@tilde.team>
use endian;
use hash;
use io;
diff --git a/hash/fnv/+aarch64.ha b/hash/fnv/+aarch64.ha
index 1340a8ad..fe12a7db 100644
--- a/hash/fnv/+aarch64.ha
+++ b/hash/fnv/+aarch64.ha
@@ -1,6 +1,2 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
-
// Hashes a string, returning a size key, for use in a hash map.
export fn string(s: str) size = string64(s): size;
diff --git a/hash/fnv/+riscv64.ha b/hash/fnv/+riscv64.ha
index 1340a8ad..fe12a7db 100644
--- a/hash/fnv/+riscv64.ha
+++ b/hash/fnv/+riscv64.ha
@@ -1,6 +1,2 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
-
// Hashes a string, returning a size key, for use in a hash map.
export fn string(s: str) size = string64(s): size;
diff --git a/hash/fnv/+x86_64.ha b/hash/fnv/+x86_64.ha
index 1340a8ad..fe12a7db 100644
--- a/hash/fnv/+x86_64.ha
+++ b/hash/fnv/+x86_64.ha
@@ -1,6 +1,2 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
-
// Hashes a string, returning a size key, for use in a hash map.
export fn string(s: str) size = string64(s): size;
diff --git a/hash/fnv/fnv.ha b/hash/fnv/fnv.ha
index 0689763c..6ee44e0c 100644
--- a/hash/fnv/fnv.ha
+++ b/hash/fnv/fnv.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Kiëd Llaentenn <kiedtl@tilde.team>
use endian;
use hash;
use io;
diff --git a/hash/hash.ha b/hash/hash.ha
index 722977f4..634244b4 100644
--- a/hash/hash.ha
+++ b/hash/hash.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Armin Preiml <apreiml@strohwolke.at>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Kiëd Llaentenn <kiedtl@tilde.team>
use io;
use fmt;
// TODO: Use a vtable-based approach for this like io::stream
diff --git a/io/+freebsd/mmap.ha b/io/+freebsd/mmap.ha
index f920fc72..fbc2713a 100644
--- a/io/+freebsd/mmap.ha
+++ b/io/+freebsd/mmap.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use rt;
diff --git a/io/+freebsd/platform_file.ha b/io/+freebsd/platform_file.ha
index 900df7a0..d97c955d 100644
--- a/io/+freebsd/platform_file.ha
+++ b/io/+freebsd/platform_file.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use rt;
diff --git a/io/+freebsd/vector.ha b/io/+freebsd/vector.ha
index 78032013..ddcb5d79 100644
--- a/io/+freebsd/vector.ha
+++ b/io/+freebsd/vector.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use errors;
use rt;
diff --git a/io/+linux/mmap.ha b/io/+linux/mmap.ha
index 00253739..f4e4438b 100644
--- a/io/+linux/mmap.ha
+++ b/io/+linux/mmap.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use rt;
diff --git a/io/+linux/platform_file.ha b/io/+linux/platform_file.ha
index 43b8c676..cf35690d 100644
--- a/io/+linux/platform_file.ha
+++ b/io/+linux/platform_file.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use rt;
diff --git a/io/+linux/vector.ha b/io/+linux/vector.ha
index 78032013..ddcb5d79 100644
--- a/io/+linux/vector.ha
+++ b/io/+linux/vector.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use errors;
use rt;
diff --git a/io/+test/limit_test.ha b/io/+test/limit_test.ha
index 267fbefa..928f2cad 100644
--- a/io/+test/limit_test.ha
+++ b/io/+test/limit_test.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
@test fn limit() void = {
diff --git a/io/+test/stream_test.ha b/io/+test/stream_test.ha
index 86acb4ae..88f4a86c 100644
--- a/io/+test/stream_test.ha
+++ b/io/+test/stream_test.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
const teststream_vtable: vtable = vtable {
reader = &teststream_read,
writer = &teststream_write,
diff --git a/io/arch+aarch64.ha b/io/arch+aarch64.ha
index be5e8902..413886f9 100644
--- a/io/arch+aarch64.ha
+++ b/io/arch+aarch64.ha
@@ -1,5 +1,2 @@
-// License: MPL-2.0
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
// An offset for a [[handle]].
export type off = i64;
diff --git a/io/arch+riscv64.ha b/io/arch+riscv64.ha
index cbeb3ed9..413886f9 100644
--- a/io/arch+riscv64.ha
+++ b/io/arch+riscv64.ha
@@ -1,5 +1,2 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// An offset for a [[handle]].
export type off = i64;
diff --git a/io/arch+x86_64.ha b/io/arch+x86_64.ha
index be5e8902..413886f9 100644
--- a/io/arch+x86_64.ha
+++ b/io/arch+x86_64.ha
@@ -1,5 +1,2 @@
-// License: MPL-2.0
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
// An offset for a [[handle]].
export type off = i64;
diff --git a/io/copy.ha b/io/copy.ha
index 426164da..3072f720 100644
--- a/io/copy.ha
+++ b/io/copy.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
// Copies data from one handle into another. If reading from the source file
diff --git a/io/drain.ha b/io/drain.ha
index efa7f5fa..da74a09a 100644
--- a/io/drain.ha
+++ b/io/drain.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
// Reads an entire stream into a []u8. The caller must free the return value.
// Note that this function will never return if the handle is infinite.
export fn drain(in: handle) ([]u8 | error) = {
diff --git a/io/empty.ha b/io/empty.ha
index 81e37bda..f37986fc 100644
--- a/io/empty.ha
+++ b/io/empty.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
const _empty_vt: vtable = vtable {
reader = &empty_read,
writer = &empty_write,
diff --git a/io/file.ha b/io/file.ha
index d04bc464..55090428 100644
--- a/io/file.ha
+++ b/io/file.ha
@@ -1,4 +1,3 @@
-// License: MPL-2.0
use rt;
// Lock operation to use with [[lock]].
diff --git a/io/handle.ha b/io/handle.ha
index e8002ea6..49870f72 100644
--- a/io/handle.ha
+++ b/io/handle.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
// TODO: Examine the ABI constraints of [[handle]]. Would it be better to make
// stream an integer representing an internal handle into a stream table? This
// would reduce performance for streams somewhat via the indirect lookup, but
diff --git a/io/limit.ha b/io/limit.ha
index 515b6f8b..ae9826e2 100644
--- a/io/limit.ha
+++ b/io/limit.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021-2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-
export type limitstream = struct {
vtable: stream,
source: handle,
diff --git a/io/stream.ha b/io/stream.ha
index caf6fc91..00ba5889 100644
--- a/io/stream.ha
+++ b/io/stream.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
use errors;
// A stream is a pointer to a [[vtable]] which allows for user-defined I/O
diff --git a/io/tee.ha b/io/tee.ha
index 099dc41b..fed270f6 100644
--- a/io/tee.ha
+++ b/io/tee.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
export type teestream = struct {
vtable: stream,
h: handle,
diff --git a/io/types.ha b/io/types.ha
index 403a92af..1a1da3f7 100644
--- a/io/types.ha
+++ b/io/types.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
// Returned by [[readall]] if the I/O handle returned [[EOF]] prior to
diff --git a/io/util.ha b/io/util.ha
index 03c3f363..2290d445 100644
--- a/io/util.ha
+++ b/io/util.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
// Reads an entire buffer, perhaps issuing several [[read]] calls to do so. If
// EOF is immediately encountered, it is returned; if [[EOF]] is encountered
// partway through reading the buffer, [[underread]] is returned.
diff --git a/io/zero.ha b/io/zero.ha
index 8a6d92bf..0237def5 100644
--- a/io/zero.ha
+++ b/io/zero.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
use bytes;
const _zero_vt: vtable = vtable {
diff --git a/linux/env.ha b/linux/env.ha
index 22c56110..f81f148a 100644
--- a/linux/env.ha
+++ b/linux/env.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Mykyta Holubakha <hilobakho@gmail.com>
use format::elf;
// System V auxillary vector for the current process
diff --git a/linux/start+libc.ha b/linux/start+libc.ha
index a1db4783..61319e07 100644
--- a/linux/start+libc.ha
+++ b/linux/start+libc.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
use rt;
use format::elf;
diff --git a/linux/start.ha b/linux/start.ha
index 456995c5..61319e07 100644
--- a/linux/start.ha
+++ b/linux/start.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Mykyta Holubakha <hilobakho@gmail.com>
use rt;
use format::elf;
diff --git a/linux/timerfd/timerfd.ha b/linux/timerfd/timerfd.ha
index 978ca66a..3eb5bbe9 100644
--- a/linux/timerfd/timerfd.ha
+++ b/linux/timerfd/timerfd.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Vincent Dagonneau <v@vda.io>
-
use errors;
use rt;
use time;
diff --git a/linux/vdso/vdso.ha b/linux/vdso/vdso.ha
index a37da4b5..f28ba340 100644
--- a/linux/vdso/vdso.ha
+++ b/linux/vdso/vdso.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Mykyta Holubakha <hilobakho@gmail.com>
use format::elf;
use linux;
use types::c;
diff --git a/math/+test/data.ha b/math/+test/data.ha
index cc46c95e..e2d6cd74 100644
--- a/math/+test/data.ha
+++ b/math/+test/data.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Vlad-Stefan Harbuz <vlad@vladh.net>
-
// The test data below is based on Go's implementation, and came with the
// following note and copyright notice:
//
diff --git a/math/complex/+test.ha b/math/complex/+test.ha
index 43e34b79..02e0d4f1 100644
--- a/math/complex/+test.ha
+++ b/math/complex/+test.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
-// (c) 2022 Carlos Une <une@fastmail.fm>
-
// The test data below is based on Go's implementation, and came with the
// following note and copyright notice:
//
diff --git a/math/complex/complex.ha b/math/complex/complex.ha
index 980d2107..fcc81a53 100644
--- a/math/complex/complex.ha
+++ b/math/complex/complex.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
-// (c) 2022 Carlos Une <une@fastmail.fm>
-
// Sections of the code below are based on Go's implementation, which is, in
// turn, based on Cephes Math Library. The original C code can be found at
// http://netlib.sandia.gov/cephes/c9x-complex/.
diff --git a/math/fenv+aarch64.ha b/math/fenv+aarch64.ha
index 88fd2765..65894349 100644
--- a/math/fenv+aarch64.ha
+++ b/math/fenv+aarch64.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-
// Defines flags characterizing types of floating point exceptions,
// Each of the flags is only defined when the target platform supports handling
// the corresponding exception. Flags NONE and ALL are always
diff --git a/math/fenv+riscv64.ha b/math/fenv+riscv64.ha
index 04cc1cd0..ef7f5863 100644
--- a/math/fenv+riscv64.ha
+++ b/math/fenv+riscv64.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-
// Defines flags characterizing types of floating point exceptions,
// Each of the flags is only defined when the target platform supports handling
// the corresponding exception. Flags NONE and ALL are always
diff --git a/math/fenv+x86_64.ha b/math/fenv+x86_64.ha
index d3d6fd19..3822acf6 100644
--- a/math/fenv+x86_64.ha
+++ b/math/fenv+x86_64.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-
// Defines flags characterizing types of floating point exceptions,
// Each of the flags is only defined when the target platform supports handling
// the corresponding exception. Flags NONE and ALL are always
diff --git a/math/fenv_func.ha b/math/fenv_func.ha
index 0b0c6993..f2a53330 100644
--- a/math/fenv_func.ha
+++ b/math/fenv_func.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
use rt;
// Accepts a set of flags from [[fexcept]] ORed together and clears
diff --git a/math/floats.ha b/math/floats.ha
index b720783c..b14547e6 100644
--- a/math/floats.ha
+++ b/math/floats.ha
@@ -1,9 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021-2022 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Sudipto Mallick <smlckz@disroot.org>
-// (c) 2021 Vlad-Stefan Harbuz <vlad@vladh.net>
use types;
// Returns the binary representation of the given f64.
diff --git a/math/ints.ha b/math/ints.ha
index 8d772324..8627ba05 100644
--- a/math/ints.ha
+++ b/math/ints.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Haelwenn (lanodan) Monnier <contact@hacktivis.me>
-// (c) 2021-2022 Vlad-Stefan Harbuz <vlad@vladh.net>
use types;
// Returns the absolute value of signed integer n.
diff --git a/math/math.ha b/math/math.ha
index 61edce33..679d9111 100644
--- a/math/math.ha
+++ b/math/math.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Vlad-Stefan Harbuz <vlad@vladh.net>
-
// Sections of the code below, in particular log() and exp(), are based on Go's
// implementation, which is, in turn, based on FreeBSD's. The original C code,
// as well as the respective comments and constants are from
diff --git a/math/random/random.ha b/math/random/random.ha
index 001415e6..5946f5f5 100644
--- a/math/random/random.ha
+++ b/math/random/random.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Steven Guikal <void@fluix.dev>
-
// State for a pseudorandom number generator.
export type random = u64;
diff --git a/math/trig.ha b/math/trig.ha
index 35dea9a7..20272c3e 100644
--- a/math/trig.ha
+++ b/math/trig.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Vlad-Stefan Harbuz <vlad@vladh.net>
-
// Sections of the code below are based on Go's implementation, which is, in
// turn, based on:
// * the Cephes Mathematical Library (cephes/cmath/{sin,..}), available from
diff --git a/math/uints.ha b/math/uints.ha
index d7f72903..9abc19df 100644
--- a/math/uints.ha
+++ b/math/uints.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Vlad-Stefan Harbuz <vlad@vladh.net>
-
// Sections of the code below are based on Go's implementation, in particular
// https://raw.githubusercontent.com/golang/go/master/src/math/bits/bits.go.
//
diff --git a/memio/ops.ha b/memio/ops.ha
index cc71b662..ff67620a 100644
--- a/memio/ops.ha
+++ b/memio/ops.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2022 Yasumasa Tada <ytada@spartan.dev>
use encoding::utf8;
use io;
use strings;
diff --git a/memio/stream.ha b/memio/stream.ha
index 2fce7075..2a61c8fb 100644
--- a/memio/stream.ha
+++ b/memio/stream.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use bytes;
use encoding::utf8;
use errors;
diff --git a/mime/database.ha b/mime/database.ha
index bd31503e..ecf621a7 100644
--- a/mime/database.ha
+++ b/mime/database.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
use hash::fnv;
use strings;
diff --git a/mime/entries+test.ha b/mime/entries+test.ha
index 60f0b704..edbae2da 100644
--- a/mime/entries+test.ha
+++ b/mime/entries+test.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-
const text_plain: mimetype = mimetype {
mime = "text/plain",
exts = ["txt"],
diff --git a/mime/lookup.ha b/mime/lookup.ha
index 24d2e0e0..9bb5a65f 100644
--- a/mime/lookup.ha
+++ b/mime/lookup.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
use hash::fnv;
use strings;
diff --git a/mime/parse.ha b/mime/parse.ha
index 666a5f52..f051ab19 100644
--- a/mime/parse.ha
+++ b/mime/parse.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
use ascii;
use errors;
use strings;
diff --git a/mime/system.ha b/mime/system.ha
index 1d71d15a..960d7b88 100644
--- a/mime/system.ha
+++ b/mime/system.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
use bufio;
use encoding::utf8;
use fmt;
diff --git a/net/+freebsd.ha b/net/+freebsd.ha
index 380a3903..041a6cff 100644
--- a/net/+freebsd.ha
+++ b/net/+freebsd.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Noah Pederson <noah@packetlost.dev>
use errors;
use io;
use rt;
diff --git a/net/+linux.ha b/net/+linux.ha
index 35f88717..58aa5c67 100644
--- a/net/+linux.ha
+++ b/net/+linux.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Noah Pederson <noah@packetlost.dev>
use errors;
use io;
use rt;
diff --git a/net/dial/dial.ha b/net/dial/dial.ha
index 37fad3dd..7507bf9f 100644
--- a/net/dial/dial.ha
+++ b/net/dial/dial.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use errors;
use fmt;
use net;
diff --git a/net/dial/ip.ha b/net/dial/ip.ha
index c02d9487..3daf5c89 100644
--- a/net/dial/ip.ha
+++ b/net/dial/ip.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
// Provides default dialers for tcp and udp
use net;
use net::tcp;
diff --git a/net/dial/registry.ha b/net/dial/registry.ha
index 1f6340ab..7c31de69 100644
--- a/net/dial/registry.ha
+++ b/net/dial/registry.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use net;
use net::dns;
use unix::hosts;
diff --git a/net/dial/resolve.ha b/net/dial/resolve.ha
index 382c8a86..7a0b5e6e 100644
--- a/net/dial/resolve.ha
+++ b/net/dial/resolve.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021-2022 Ember Sawady <ecs@d2evs.net>
use crypto::random;
use net::dns;
use net::ip;
diff --git a/net/dns/decode.ha b/net/dns/decode.ha
index e336fb58..5415f0c9 100644
--- a/net/dns/decode.ha
+++ b/net/dns/decode.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2022 Lassi Pulkkinen <lassi@pulk.fi>
use ascii;
use endian;
use fmt;
diff --git a/net/dns/encode.ha b/net/dns/encode.ha
index 46df753c..cb6d34fb 100644
--- a/net/dns/encode.ha
+++ b/net/dns/encode.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use endian;
use errors;
use fmt;
diff --git a/net/dns/error.ha b/net/dns/error.ha
index 3a8498cf..417fc349 100644
--- a/net/dns/error.ha
+++ b/net/dns/error.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use fmt;
use io;
diff --git a/net/dns/query.ha b/net/dns/query.ha
index 35dd7522..f778e821 100644
--- a/net/dns/query.ha
+++ b/net/dns/query.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use endian;
use errors;
use io;
diff --git a/net/dns/strdomain.ha b/net/dns/strdomain.ha
index d6921ef1..8528b0e1 100644
--- a/net/dns/strdomain.ha
+++ b/net/dns/strdomain.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use strings;
// Converts a human-readable domain name (e.g. "example.org") into a DNS-ready
diff --git a/net/dns/types.ha b/net/dns/types.ha
index fbd0c87e..a575e491 100644
--- a/net/dns/types.ha
+++ b/net/dns/types.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Jonathan Halmen <slowjo@halmen.xyz>
-// (c) 2022 Lassi Pulkkinen <lassi@pulk.fi>
use net::ip;
use strings;
diff --git a/net/errors.ha b/net/errors.ha
index 00161dc1..fed8be1b 100644
--- a/net/errors.ha
+++ b/net/errors.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use io;
diff --git a/net/ip/+freebsd.ha b/net/ip/+freebsd.ha
index f4256340..cdf99d99 100644
--- a/net/ip/+freebsd.ha
+++ b/net/ip/+freebsd.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use rt;
use endian;
diff --git a/net/ip/+linux.ha b/net/ip/+linux.ha
index de785584..c49b796a 100644
--- a/net/ip/+linux.ha
+++ b/net/ip/+linux.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Mykyta Holubakha <hilobakho@gmail.com>
use rt;
use endian;
diff --git a/net/ip/ip.ha b/net/ip/ip.ha
index 400a2f10..cedb3005 100644
--- a/net/ip/ip.ha
+++ b/net/ip/ip.ha
@@ -1,12 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Byron Torres <b@torresjrjr.com>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Miccah Castorina <contact@miccah.io>
-// (c) 2021 Mykyta Holubakha <hilobakho@gmail.com>
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
use bytes;
use endian;
use fmt;
diff --git a/net/ip/test+test.ha b/net/ip/test+test.ha
index 56eeb570..7d8f6fff 100644
--- a/net/ip/test+test.ha
+++ b/net/ip/test+test.ha
@@ -1,9 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Byron Torres <b@torresjrjr.com>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Miccah Castorina <contact@miccah.io>
-// (c) 2021 Mykyta Holubakha <hilobakho@gmail.com>
use strings;
use fmt;
diff --git a/net/msg.ha b/net/msg.ha
index 30906867..19ef273d 100644
--- a/net/msg.ha
+++ b/net/msg.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// TODO:
// - Set name field
// - Figure out the portability mess that is this interface
diff --git a/net/tcp/+freebsd.ha b/net/tcp/+freebsd.ha
index a7cf096a..6b3fb0e7 100644
--- a/net/tcp/+freebsd.ha
+++ b/net/tcp/+freebsd.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use io;
use net::ip;
diff --git a/net/tcp/+linux.ha b/net/tcp/+linux.ha
index 356e9aa7..63591d88 100644
--- a/net/tcp/+linux.ha
+++ b/net/tcp/+linux.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use io;
use net::ip;
diff --git a/net/tcp/listener.ha b/net/tcp/listener.ha
index 6101d89f..07952833 100644
--- a/net/tcp/listener.ha
+++ b/net/tcp/listener.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use net;
// Accepts the next connection from a socket. Blocks until a new connection is
diff --git a/net/tcp/options.ha b/net/tcp/options.ha
index ae401ba0..43540b96 100644
--- a/net/tcp/options.ha
+++ b/net/tcp/options.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use net;
// Enables keep-alive for a socket.
diff --git a/net/udp/+freebsd.ha b/net/udp/+freebsd.ha
index 12e3bcd9..f801ee38 100644
--- a/net/udp/+freebsd.ha
+++ b/net/udp/+freebsd.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use io;
use net::ip;
diff --git a/net/udp/+linux.ha b/net/udp/+linux.ha
index ce4cda5a..d1f99c06 100644
--- a/net/udp/+linux.ha
+++ b/net/udp/+linux.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use io;
use net::ip;
diff --git a/net/udp/options.ha b/net/udp/options.ha
index 6c2da95e..54c40c7a 100644
--- a/net/udp/options.ha
+++ b/net/udp/options.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use net;
// Enables port re-use for a UDP listener.
diff --git a/net/unix/+freebsd.ha b/net/unix/+freebsd.ha
index e57b4bdd..eaf9a3ae 100644
--- a/net/unix/+freebsd.ha
+++ b/net/unix/+freebsd.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use fmt;
use io;
diff --git a/net/unix/+linux.ha b/net/unix/+linux.ha
index b1b04a32..a9d510b6 100644
--- a/net/unix/+linux.ha
+++ b/net/unix/+linux.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Mykyta Holubakha <hilobakho@gmail.com>
use errors;
use fmt;
use io;
diff --git a/net/unix/addr.ha b/net/unix/addr.ha
index 409b9e62..837067d1 100644
--- a/net/unix/addr.ha
+++ b/net/unix/addr.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Mykyta Holubakha <hilobakho@gmail.com>
-
// A UNIX socket address.
export type addr = str;
diff --git a/net/unix/cmsg.ha b/net/unix/cmsg.ha
index ab9fdde2..b81bb839 100644
--- a/net/unix/cmsg.ha
+++ b/net/unix/cmsg.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use net;
use io;
use rt;
diff --git a/net/unix/dial.ha b/net/unix/dial.ha
index 72910a50..e2e89f06 100644
--- a/net/unix/dial.ha
+++ b/net/unix/dial.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use net::dial;
use net;
diff --git a/net/unix/listener.ha b/net/unix/listener.ha
index 6101d89f..07952833 100644
--- a/net/unix/listener.ha
+++ b/net/unix/listener.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use net;
// Accepts the next connection from a socket. Blocks until a new connection is
diff --git a/net/unix/options.ha b/net/unix/options.ha
index 4ef1fb24..0c30d0d8 100644
--- a/net/unix/options.ha
+++ b/net/unix/options.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use net;
// Configures the backlog size for a listener. If not specified, a sensible
diff --git a/net/unix/socketpair.ha b/net/unix/socketpair.ha
index 54a67f2b..b4f2204c 100644
--- a/net/unix/socketpair.ha
+++ b/net/unix/socketpair.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
use errors;
use io;
use net;
diff --git a/net/uri/parse.ha b/net/uri/parse.ha
index 563c8376..7665feef 100644
--- a/net/uri/parse.ha
+++ b/net/uri/parse.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2022 Umar Getagazov <umar@handlerug.me>
use ascii;
use encoding::utf8;
use io;
diff --git a/os/+freebsd/dirfdfs.ha b/os/+freebsd/dirfdfs.ha
index 637fa51c..98c9f597 100644
--- a/os/+freebsd/dirfdfs.ha
+++ b/os/+freebsd/dirfdfs.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Jon Eskin <eskinjp@gmail.com>
use errors;
use encoding::utf8;
use fs;
diff --git a/os/+freebsd/exit+test.ha b/os/+freebsd/exit+test.ha
index a7614c21..0de49f8c 100644
--- a/os/+freebsd/exit+test.ha
+++ b/os/+freebsd/exit+test.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2023 Sebastian <sebastian@sebsite.pw>
-
// Exit the program with the provided status code.
export fn exit(status: int) never = {
abort("os::exit disabled in +test");
diff --git a/os/+freebsd/exit.ha b/os/+freebsd/exit.ha
index 57638a66..5e7d5f25 100644
--- a/os/+freebsd/exit.ha
+++ b/os/+freebsd/exit.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use rt;
// Exit the program with the provided status code.
diff --git a/os/+freebsd/fs.ha b/os/+freebsd/fs.ha
index ed95f293..10a18fc8 100644
--- a/os/+freebsd/fs.ha
+++ b/os/+freebsd/fs.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use fs;
use path;
diff --git a/os/+freebsd/platform_environ.ha b/os/+freebsd/platform_environ.ha
index 1c915713..480d52f1 100644
--- a/os/+freebsd/platform_environ.ha
+++ b/os/+freebsd/platform_environ.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use rt;
use strings;
diff --git a/os/+freebsd/stdfd.ha b/os/+freebsd/stdfd.ha
index 0fd49054..2e996540 100644
--- a/os/+freebsd/stdfd.ha
+++ b/os/+freebsd/stdfd.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use bufio;
use io;
use rt;
diff --git a/os/+linux/dirfdfs.ha b/os/+linux/dirfdfs.ha
index 8ad59807..1443380b 100644
--- a/os/+linux/dirfdfs.ha
+++ b/os/+linux/dirfdfs.ha
@@ -1,9 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Jon Eskin <eskinjp@gmail.com>
use errors;
use encoding::utf8;
use fs;
diff --git a/os/+linux/exit+test.ha b/os/+linux/exit+test.ha
index a7614c21..0de49f8c 100644
--- a/os/+linux/exit+test.ha
+++ b/os/+linux/exit+test.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2023 Sebastian <sebastian@sebsite.pw>
-
// Exit the program with the provided status code.
export fn exit(status: int) never = {
abort("os::exit disabled in +test");
diff --git a/os/+linux/exit.ha b/os/+linux/exit.ha
index 57638a66..5e7d5f25 100644
--- a/os/+linux/exit.ha
+++ b/os/+linux/exit.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use rt;
// Exit the program with the provided status code.
diff --git a/os/+linux/fs.ha b/os/+linux/fs.ha
index 36f34929..7888f77e 100644
--- a/os/+linux/fs.ha
+++ b/os/+linux/fs.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use fs;
use path;
diff --git a/os/+linux/platform_environ.ha b/os/+linux/platform_environ.ha
index dee78dcb..8fc20526 100644
--- a/os/+linux/platform_environ.ha
+++ b/os/+linux/platform_environ.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use math;
use rt;
diff --git a/os/+linux/stdfd.ha b/os/+linux/stdfd.ha
index 0fd49054..2e996540 100644
--- a/os/+linux/stdfd.ha
+++ b/os/+linux/stdfd.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use bufio;
use io;
use rt;
diff --git a/os/exec/cmd.ha b/os/exec/cmd.ha
index b88e0d63..0ddedef6 100644
--- a/os/exec/cmd.ha
+++ b/os/exec/cmd.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
use ascii;
use errors;
use io;
diff --git a/os/exec/exec+freebsd.ha b/os/exec/exec+freebsd.ha
index bb366522..715bd64c 100644
--- a/os/exec/exec+freebsd.ha
+++ b/os/exec/exec+freebsd.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use io;
use rt;
diff --git a/os/exec/exec+linux.ha b/os/exec/exec+linux.ha
index 30a7f5ce..09aa702e 100644
--- a/os/exec/exec+linux.ha
+++ b/os/exec/exec+linux.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use io;
use os;
diff --git a/os/exec/process+freebsd.ha b/os/exec/process+freebsd.ha
index 8cdd1f5e..89216cf0 100644
--- a/os/exec/process+freebsd.ha
+++ b/os/exec/process+freebsd.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use fmt;
use rt;
diff --git a/os/exec/process+linux.ha b/os/exec/process+linux.ha
index 9abdc1f5..7086c0e4 100644
--- a/os/exec/process+linux.ha
+++ b/os/exec/process+linux.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use fmt;
use rt;
diff --git a/os/exec/types.ha b/os/exec/types.ha
index e6bec844..a4475b25 100644
--- a/os/exec/types.ha
+++ b/os/exec/types.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use fs;
use io;
diff --git a/os/os.ha b/os/os.ha
index 2a9412d1..09d20380 100644
--- a/os/os.ha
+++ b/os/os.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Jon Eskin <eskinjp@gmail.com>
use fs;
use io;
use path;
diff --git a/path/+freebsd.ha b/path/+freebsd.ha
index b4d5435d..b725415c 100644
--- a/path/+freebsd.ha
+++ b/path/+freebsd.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-
// Platform-specific path separator byte.
export def SEP: u8 = '/';
diff --git a/path/+linux.ha b/path/+linux.ha
index b4d5435d..b725415c 100644
--- a/path/+linux.ha
+++ b/path/+linux.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-
// Platform-specific path separator byte.
export def SEP: u8 = '/';
diff --git a/path/buffer.ha b/path/buffer.ha
index d5ce98f0..0f5ac2d9 100644
--- a/path/buffer.ha
+++ b/path/buffer.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2022 Humm <hummsmith42@gmail.com>
use bytes;
use strings;
diff --git a/path/ext_stack.ha b/path/ext_stack.ha
index 0a45187c..dd0c0212 100644
--- a/path/ext_stack.ha
+++ b/path/ext_stack.ha
@@ -1,4 +1,3 @@
-// License: MPL-2.0
use bytes;
use strings;
diff --git a/path/iter.ha b/path/iter.ha
index a1ef705a..3d7a67b1 100644
--- a/path/iter.ha
+++ b/path/iter.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use bytes;
use strings;
diff --git a/path/posix.ha b/path/posix.ha
index 312c3270..a94be02c 100644
--- a/path/posix.ha
+++ b/path/posix.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use bytes;
use strings;
diff --git a/path/stack.ha b/path/stack.ha
index 3222aca5..f2f609d3 100644
--- a/path/stack.ha
+++ b/path/stack.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
use bytes;
use strings;
diff --git a/regex/+test.ha b/regex/+test.ha
index d81e537d..325dadea 100644
--- a/regex/+test.ha
+++ b/regex/+test.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Vlad-Stefan Harbuz <vlad@vladh.net>
use fmt;
use strings;
use types;
diff --git a/regex/regex.ha b/regex/regex.ha
index 97892d14..59161360 100644
--- a/regex/regex.ha
+++ b/regex/regex.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Vlad-Stefan Harbuz <vlad@vladh.net>
use ascii;
use bufio;
use encoding::utf8;
diff --git a/rt/+aarch64/arch_jmp.ha b/rt/+aarch64/arch_jmp.ha
index 04eb4312..7cfc84fc 100644
--- a/rt/+aarch64/arch_jmp.ha
+++ b/rt/+aarch64/arch_jmp.ha
@@ -1,4 +1 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
export type arch_jmpbuf = [22]u64;
diff --git a/rt/+aarch64/backtrace.ha b/rt/+aarch64/backtrace.ha
index fd6f6eb2..b17b1bbd 100644
--- a/rt/+aarch64/backtrace.ha
+++ b/rt/+aarch64/backtrace.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Mykyta Holubakha <hilobakho@gmail.com>
-// (c) 2021 Sudipto Mallick <smlckz@disroot.org>
-
fn getfp() **opaque;
// Details for a stack frame. Contents are architecture-specific.
diff --git a/rt/+freebsd/env.ha b/rt/+freebsd/env.ha
index 4deb6423..da4385eb 100644
--- a/rt/+freebsd/env.ha
+++ b/rt/+freebsd/env.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
export let argc: size = 0;
export let argv: *[*]*u8 = null: *[*]*u8;
export let envp: *[*]nullable *u8 = null: *[*]nullable *u8;
diff --git a/rt/+freebsd/errno.ha b/rt/+freebsd/errno.ha
index 30a4e3ae..8cbe1901 100644
--- a/rt/+freebsd/errno.ha
+++ b/rt/+freebsd/errno.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// Represents an error returned from the FreeBSD kernel.
export type errno = !int;
diff --git a/rt/+freebsd/platform_abort.ha b/rt/+freebsd/platform_abort.ha
index aae7c890..b7de8129 100644
--- a/rt/+freebsd/platform_abort.ha
+++ b/rt/+freebsd/platform_abort.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
fn platform_abort(path: *str, line: u64, col: u64, msg: str) void = {
const prefix = "Abort: ";
const sep = ":";
diff --git a/rt/+freebsd/platformstart.ha b/rt/+freebsd/platformstart.ha
index 0d1389e5..c13b9376 100644
--- a/rt/+freebsd/platformstart.ha
+++ b/rt/+freebsd/platformstart.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
export fn start_freebsd(iv: *[*]uintptr) never = {
// TODO: Find & parse auxv
argc = iv[0]: size;
diff --git a/rt/+freebsd/segmalloc.ha b/rt/+freebsd/segmalloc.ha
index 0b96a74d..c036667b 100644
--- a/rt/+freebsd/segmalloc.ha
+++ b/rt/+freebsd/segmalloc.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
// Allocates a segment.
fn segmalloc(n: size) nullable *opaque = {
return match (mmap(null, n, PROT_READ | PROT_WRITE,
diff --git a/rt/+freebsd/signal.ha b/rt/+freebsd/signal.ha
index 861b22b7..f81762d3 100644
--- a/rt/+freebsd/signal.ha
+++ b/rt/+freebsd/signal.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// TODO: work when _NSIG != 32
export fn sigemptyset(set: *sigset) void = {
diff --git a/rt/+freebsd/socket.ha b/rt/+freebsd/socket.ha
index afc6b5c3..0bf89316 100644
--- a/rt/+freebsd/socket.ha
+++ b/rt/+freebsd/socket.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
-
export type sa_family_t = u8;
export type socklen_t = u32;
diff --git a/rt/+freebsd/syscallno.ha b/rt/+freebsd/syscallno.ha
index 21efcf55..56a37bcf 100644
--- a/rt/+freebsd/syscallno.ha
+++ b/rt/+freebsd/syscallno.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
export def SYS_syscall: u64 = 0;
export def SYS_exit: u64 = 1;
export def SYS_fork: u64 = 2;
diff --git a/rt/+freebsd/syscalls.ha b/rt/+freebsd/syscalls.ha
index 60af8e8d..ea944fab 100644
--- a/rt/+freebsd/syscalls.ha
+++ b/rt/+freebsd/syscalls.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
-
fn syscall0(u64) u64;
fn syscall1(u64, u64) u64;
fn syscall2(u64, u64, u64) u64;
diff --git a/rt/+freebsd/types.ha b/rt/+freebsd/types.ha
index af43bdea..dbfe3c83 100644
--- a/rt/+freebsd/types.ha
+++ b/rt/+freebsd/types.ha
@@ -1,9 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
-
export type time_t = i64;
export type suseconds_t = i64;
export type dev_t = u64;
diff --git a/rt/+linux/+aarch64.ha b/rt/+linux/+aarch64.ha
index 847798f3..2f880a44 100644
--- a/rt/+linux/+aarch64.ha
+++ b/rt/+linux/+aarch64.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Sudipto Mallick <smlckz@disroot.org>
-
// #define __ADDR_BND_PKEY_PAD (_Alignof(void *) < sizeof(short) ? sizeof(short) : _Alignof(void *))
def __ADDR_BND_PKEY_PAD: size = 8;
diff --git a/rt/+linux/+riscv64.ha b/rt/+linux/+riscv64.ha
index 1d038694..f90e9ec7 100644
--- a/rt/+linux/+riscv64.ha
+++ b/rt/+linux/+riscv64.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Michael Forney <mforney@mforney.org>
-
// #define __ADDR_BND_PKEY_PAD (_Alignof(void *) < sizeof(short) ? sizeof(short) : _Alignof(void *))
def __ADDR_BND_PKEY_PAD: size = 8;
diff --git a/rt/+linux/+x86_64.ha b/rt/+linux/+x86_64.ha
index 143c29c2..cabd002b 100644
--- a/rt/+linux/+x86_64.ha
+++ b/rt/+linux/+x86_64.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
// #define __ADDR_BND_PKEY_PAD (_Alignof(void *) < sizeof(short) ? sizeof(short) : _Alignof(void *))
def __ADDR_BND_PKEY_PAD: size = 8;
diff --git a/rt/+linux/env.ha b/rt/+linux/env.ha
index 4deb6423..da4385eb 100644
--- a/rt/+linux/env.ha
+++ b/rt/+linux/env.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
export let argc: size = 0;
export let argv: *[*]*u8 = null: *[*]*u8;
export let envp: *[*]nullable *u8 = null: *[*]nullable *u8;
diff --git a/rt/+linux/errno.ha b/rt/+linux/errno.ha
index 529d5b94..5e973aa9 100644
--- a/rt/+linux/errno.ha
+++ b/rt/+linux/errno.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
// Represents an error returned from the Linux kernel.
export type errno = !int;
diff --git a/rt/+linux/platform_abort.ha b/rt/+linux/platform_abort.ha
index aae7c890..b7de8129 100644
--- a/rt/+linux/platform_abort.ha
+++ b/rt/+linux/platform_abort.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
fn platform_abort(path: *str, line: u64, col: u64, msg: str) void = {
const prefix = "Abort: ";
const sep = ":";
diff --git a/rt/+linux/platformstart-libc.ha b/rt/+linux/platformstart-libc.ha
index 4d9e597a..f50efbea 100644
--- a/rt/+linux/platformstart-libc.ha
+++ b/rt/+linux/platformstart-libc.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Armin Weigl <tb46305@gmail.com>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
export fn start_linux(iv: *[*]uintptr) never = {
argc = iv[0]: size;
argv = &iv[1]: *[*]*u8;
diff --git a/rt/+linux/prctl.ha b/rt/+linux/prctl.ha
index cddc5f9b..8a749ec0 100644
--- a/rt/+linux/prctl.ha
+++ b/rt/+linux/prctl.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
export def PR_SET_PDEATHSIG = 1;
export def PR_GET_PDEATHSIG = 2;
export def PR_GET_DUMPABLE = 3;
diff --git a/rt/+linux/segmalloc.ha b/rt/+linux/segmalloc.ha
index 0b96a74d..c036667b 100644
--- a/rt/+linux/segmalloc.ha
+++ b/rt/+linux/segmalloc.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
// Allocates a segment.
fn segmalloc(n: size) nullable *opaque = {
return match (mmap(null, n, PROT_READ | PROT_WRITE,
diff --git a/rt/+linux/signal.ha b/rt/+linux/signal.ha
index b4fbdaee..db83fa37 100644
--- a/rt/+linux/signal.ha
+++ b/rt/+linux/signal.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Mykyta Holubakha <hilobakho@gmail.com>
-
// TODO: work when _NSIG != 64
export fn sigemptyset(set: *sigset) void = {
diff --git a/rt/+linux/socket.ha b/rt/+linux/socket.ha
index f92f354f..68bf719c 100644
--- a/rt/+linux/socket.ha
+++ b/rt/+linux/socket.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Mykyta Holubakha <hilobakho@gmail.com>
-
export type sa_family_t = u16;
export type socklen_t = uint;
diff --git a/rt/+linux/stat.ha b/rt/+linux/stat.ha
index 693cee43..b4c510f4 100644
--- a/rt/+linux/stat.ha
+++ b/rt/+linux/stat.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
export fn mkdev(major: u32, minor: u32) dev_t =
((major: u64 & 0xFFFFF000) << 32) |
((major: u64 & 0x00000FFF) << 8) |
diff --git a/rt/+linux/syscallno+aarch64.ha b/rt/+linux/syscallno+aarch64.ha
index eddfa813..23fab56e 100644
--- a/rt/+linux/syscallno+aarch64.ha
+++ b/rt/+linux/syscallno+aarch64.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
export def SYS_io_setup: u64 = 0;
export def SYS_io_destroy: u64 = 1;
export def SYS_io_submit: u64 = 2;
diff --git a/rt/+linux/syscallno+riscv64.ha b/rt/+linux/syscallno+riscv64.ha
index 8174bc25..a544c478 100644
--- a/rt/+linux/syscallno+riscv64.ha
+++ b/rt/+linux/syscallno+riscv64.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
export def SYS_io_setup: u64 = 0;
export def SYS_io_destroy: u64 = 1;
export def SYS_io_submit: u64 = 2;
diff --git a/rt/+linux/syscallno+x86_64.ha b/rt/+linux/syscallno+x86_64.ha
index 1a5d689a..e4bea24e 100644
--- a/rt/+linux/syscallno+x86_64.ha
+++ b/rt/+linux/syscallno+x86_64.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
export def SYS_read: u64 = 0;
export def SYS_write: u64 = 1;
export def SYS_open: u64 = 2;
diff --git a/rt/+linux/syscalls.ha b/rt/+linux/syscalls.ha
index 76d7116d..072300ba 100644
--- a/rt/+linux/syscalls.ha
+++ b/rt/+linux/syscalls.ha
@@ -1,11 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Mykyta Holubakha <hilobakho@gmail.com>
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
-// (c) 2022 Vincent Dagonneau <v@vda.io>
-
fn syscall0(u64) u64;
fn syscall1(u64, u64) u64;
fn syscall2(u64, u64, u64) u64;
diff --git a/rt/+linux/types.ha b/rt/+linux/types.ha
index 0936c037..922707d7 100644
--- a/rt/+linux/types.ha
+++ b/rt/+linux/types.ha
@@ -1,13 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Kiëd Llaentenn <kiedtl@tilde.team>
-// (c) 2021 Mykyta Holubakha <hilobakho@gmail.com>
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
-// (c) 2022 Vincent Dagonneau <v@vda.io>
-
export type off_t = u64;
export type dev_t = u64;
export type ino_t = u64;
diff --git a/rt/+riscv64/arch_jmp.ha b/rt/+riscv64/arch_jmp.ha
index bed9ac33..c4797399 100644
--- a/rt/+riscv64/arch_jmp.ha
+++ b/rt/+riscv64/arch_jmp.ha
@@ -1,4 +1 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
export type arch_jmpbuf = [26]u64;
diff --git a/rt/+riscv64/backtrace.ha b/rt/+riscv64/backtrace.ha
index ba8cc2a4..201b3b30 100644
--- a/rt/+riscv64/backtrace.ha
+++ b/rt/+riscv64/backtrace.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
fn getfp() **opaque;
// Details for a stack frame. Contents are architecture-specific.
diff --git a/rt/+riscv64/fenv.s b/rt/+riscv64/fenv.s
index ce1fd644..465d3a84 100644
--- a/rt/+riscv64/fenv.s
+++ b/rt/+riscv64/fenv.s
@@ -1,6 +1,3 @@
-# License: MPL-2.0
-# (c) 2022 Alexey Yerin <yyp@disroot.org>
-
.section ".text.rt.feclearexcept","ax"
.global rt.feclearexcept
.type rt.feclearexcept,@function
diff --git a/rt/+test/signal_test.ha b/rt/+test/signal_test.ha
index 8ff7aa17..5b852c72 100644
--- a/rt/+test/signal_test.ha
+++ b/rt/+test/signal_test.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Jose Lombera <jose@lombera.dev>
-
// Test sigset operations do not fail for valid signal numbers.
@test fn sigset_valid_signum() void = {
let set = sigset { ... };
diff --git a/rt/+x86_64/arch_jmp.ha b/rt/+x86_64/arch_jmp.ha
index c14186c5..2fa2d60d 100644
--- a/rt/+x86_64/arch_jmp.ha
+++ b/rt/+x86_64/arch_jmp.ha
@@ -1,4 +1 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
export type arch_jmpbuf = [8]u64;
diff --git a/rt/+x86_64/backtrace.ha b/rt/+x86_64/backtrace.ha
index e9436ff9..8a5aff83 100644
--- a/rt/+x86_64/backtrace.ha
+++ b/rt/+x86_64/backtrace.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Mykyta Holubakha <hilobakho@gmail.com>
-
fn getfp() **opaque;
// Details for a stack frame. Contents are architecture-specific.
diff --git a/rt/abort+test.ha b/rt/abort+test.ha
index 24977a34..ecd602bb 100644
--- a/rt/abort+test.ha
+++ b/rt/abort+test.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
export type abort_reason = struct {
path: nullable *str,
line: u64,
diff --git a/rt/abort.ha b/rt/abort.ha
index fd4b1200..f8b52195 100644
--- a/rt/abort.ha
+++ b/rt/abort.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
export @symbol("rt.abort") fn _abort(
path: *str,
line: u64,
diff --git a/rt/ensure.ha b/rt/ensure.ha
index 647b5249..2e1c9f22 100644
--- a/rt/ensure.ha
+++ b/rt/ensure.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
export type slice = struct {
data: nullable *opaque,
length: size,
diff --git a/rt/fenv_defs.ha b/rt/fenv_defs.ha
index 5fc74cc3..81200a0b 100644
--- a/rt/fenv_defs.ha
+++ b/rt/fenv_defs.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-
export fn feclearexcept(ex: uint) void;
export fn feraiseexcept(ex: uint) void;
export fn fetestexcept(ex: uint) uint;
diff --git a/rt/jmp.ha b/rt/jmp.ha
index c956a38d..ba72cd5b 100644
--- a/rt/jmp.ha
+++ b/rt/jmp.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
export type jmpbuf = struct {
__jb: arch_jmpbuf,
__fl: size,
diff --git a/rt/malloc+libc.ha b/rt/malloc+libc.ha
index 3e9ccece..ea0b871f 100644
--- a/rt/malloc+libc.ha
+++ b/rt/malloc+libc.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-
// Allocates n bytes of memory and returns a pointer to them, or null if there
// is insufficient memory.
export fn malloc(n: size) nullable *opaque = {
diff --git a/rt/memcpy.ha b/rt/memcpy.ha
index b49175cd..c3b73069 100644
--- a/rt/memcpy.ha
+++ b/rt/memcpy.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
def MOD32 = size(u32) - 1;
export fn memcpy(dest: *opaque, src: *const opaque, n: size) void = {
diff --git a/rt/memfunc_ptr.ha b/rt/memfunc_ptr.ha
index 8353fd46..1fbe1018 100644
--- a/rt/memfunc_ptr.ha
+++ b/rt/memfunc_ptr.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-
type memfunc_ptr = union {
byte: *[*]u8,
quad: *[*]u32,
diff --git a/rt/memmove.ha b/rt/memmove.ha
index 597a1fee..078013be 100644
--- a/rt/memmove.ha
+++ b/rt/memmove.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
def SZSZ = size(size);
def MODSZ = size(size) - 1;
diff --git a/rt/memset.ha b/rt/memset.ha
index 7c5f6200..acd525ff 100644
--- a/rt/memset.ha
+++ b/rt/memset.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
export fn memset(dest: *opaque, val: u8, n: size) void = {
// implementation adapted from musl libc
diff --git a/rt/start+libc.ha b/rt/start+libc.ha
index fbaa9356..870f9ff7 100644
--- a/rt/start+libc.ha
+++ b/rt/start+libc.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
@symbol(".main") fn main() void;
@symbol("exit") fn c_exit(status: int) never;
diff --git a/rt/start+test+libc.ha b/rt/start+test+libc.ha
index fd95de60..188aa7e8 100644
--- a/rt/start+test+libc.ha
+++ b/rt/start+test+libc.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-
@symbol("__test_main") fn test_main() size;
const @symbol("__libc_init_array_start") init_start: [*]*fn() void;
diff --git a/rt/start+test.ha b/rt/start+test.ha
index 673fc36c..03cf329c 100644
--- a/rt/start+test.ha
+++ b/rt/start+test.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
@symbol("__test_main") fn test_main() size;
const @symbol("__init_array_start") init_start: [*]*fn() void;
diff --git a/rt/start.ha b/rt/start.ha
index 732407aa..981067aa 100644
--- a/rt/start.ha
+++ b/rt/start.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Armin Weigl <tb46305@gmail.com>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
@symbol("main") fn main() void;
const @symbol("__init_array_start") init_start: [*]*fn() void;
diff --git a/rt/strcmp.ha b/rt/strcmp.ha
index a58c84ea..3851423a 100644
--- a/rt/strcmp.ha
+++ b/rt/strcmp.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
type string = struct {
data: *[*]u8,
length: size,
diff --git a/shlex/+test.ha b/shlex/+test.ha
index 02b6242f..3b05b2f8 100644
--- a/shlex/+test.ha
+++ b/shlex/+test.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
use io;
use memio;
use strings;
diff --git a/shlex/escape.ha b/shlex/escape.ha
index 05365852..51c03437 100644
--- a/shlex/escape.ha
+++ b/shlex/escape.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
use ascii;
use encoding::utf8;
use io;
diff --git a/shlex/split.ha b/shlex/split.ha
index 98703e6d..79ff907f 100644
--- a/shlex/split.ha
+++ b/shlex/split.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use io;
use memio;
use strings;
diff --git a/sort/+test.ha b/sort/+test.ha
index 3507cafb..f86e5185 100644
--- a/sort/+test.ha
+++ b/sort/+test.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
use math::random;
use types;
diff --git a/sort/bisect.ha b/sort/bisect.ha
index 19e1d4e7..05f49730 100644
--- a/sort/bisect.ha
+++ b/sort/bisect.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
-
// Determines the index that 'elem' should be inserted into sorted slice 'in'.
// If 'elem' already appears in the slice, inserting to the returned index will
// insert immediately before the first occurance.
diff --git a/sort/search.ha b/sort/search.ha
index def6433a..93bc8d08 100644
--- a/sort/search.ha
+++ b/sort/search.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// Performs a binary search over a sorted slice. If the key is found, index of
// the matching item in the slice is returned. Otherwise, void is returned.
export fn search(
diff --git a/sort/sort.ha b/sort/sort.ha
index 8c5b0d20..af0e455f 100644
--- a/sort/sort.ha
+++ b/sort/sort.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Steven Guikal <void@fluix.one>
-
use math;
use types;
use rt;
diff --git a/sort/types.ha b/sort/types.ha
index 0c9355b0..8ab1b1c2 100644
--- a/sort/types.ha
+++ b/sort/types.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
use strings;
// This function type is used when sorting and searching. Given two pointers to
diff --git a/strconv/+test/stoi_test.ha b/strconv/+test/stoi_test.ha
index 363abd89..a7530cd9 100644
--- a/strconv/+test/stoi_test.ha
+++ b/strconv/+test/stoi_test.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Andri Yngvason <andri@yngvason.is>
-// (c) 2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use types;
@test fn stoi() void = {
diff --git a/strconv/+test/stou_test.ha b/strconv/+test/stou_test.ha
index 75022ab8..6845fc16 100644
--- a/strconv/+test/stou_test.ha
+++ b/strconv/+test/stou_test.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Andri Yngvason <andri@yngvason.is>
-// (c) 2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
@test fn stou() void = {
assert(stou64("") as invalid == 0: invalid);
assert(stou64("abc") as invalid == 0: invalid);
diff --git a/strconv/ftos.ha b/strconv/ftos.ha
index da996d33..5efc0efa 100644
--- a/strconv/ftos.ha
+++ b/strconv/ftos.ha
@@ -1,11 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Sudipto Mallick <smlckz@disroot.org>
-// (c) 2021 Sudipto Mallick <smlckz@envs.net>
-// (c) 2021 Vlad-Stefan Harbuz <vlad@vladh.net>
-
// Using Ryū: fast float-to-string conversion algorithm by Ulf Adams.
// https://doi.org/10.1145/3192366.3192369
// This Hare implementation is translated from the original
diff --git a/strconv/itos.ha b/strconv/itos.ha
index 8ce80640..20eee50c 100644
--- a/strconv/itos.ha
+++ b/strconv/itos.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Andri Yngvason <andri@yngvason.is>
-// (c) 2021 Armin Weigl <tb46305@gmail.com>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use bytes;
use types;
use strings;
diff --git a/strconv/numeric.ha b/strconv/numeric.ha
index e38e510e..39905b3d 100644
--- a/strconv/numeric.ha
+++ b/strconv/numeric.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021-2022 Ember Sawady <ecs@d2evs.net>
use types;
// Converts any [[types::signed]] to a string in a given base. The return value is
diff --git a/strconv/stof.ha b/strconv/stof.ha
index e6d5016e..904ca388 100644
--- a/strconv/stof.ha
+++ b/strconv/stof.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Sudipto Mallick <smlckz@disroot.org>
-// (c) 2021 Vlad-Stefan Harbuz <vlad@vladh.net>
-
// Using the Eisel-Lemire algorithm [1] for fast parsing of floating-point
// numbers, with Simple Decimal Conversion algorithm [2] as fallback.
// [1]: https://nigeltao.github.io/blog/2020/eisel-lemire.html
diff --git a/strconv/stof_data.ha b/strconv/stof_data.ha
index 08c86860..ce819fae 100644
--- a/strconv/stof_data.ha
+++ b/strconv/stof_data.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Sudipto Mallick <smlckz@disroot.org>
-
const left_shift_table: [65]u16 = [
0x0000, 0x0800, 0x0801, 0x0803, 0x1006, 0x1009, 0x100D, 0x1812, 0x1817,
0x181D, 0x2024, 0x202B, 0x2033, 0x203C, 0x2846, 0x2850, 0x285B, 0x3067,
diff --git a/strconv/stoi.ha b/strconv/stoi.ha
index 72732343..ed3fde6b 100644
--- a/strconv/stoi.ha
+++ b/strconv/stoi.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Andri Yngvason <andri@yngvason.is>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use types;
use strings;
diff --git a/strconv/stou.ha b/strconv/stou.ha
index 34822b7e..3bd614a5 100644
--- a/strconv/stou.ha
+++ b/strconv/stou.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Andri Yngvason <andri@yngvason.is>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use strings;
use types;
use ascii;
diff --git a/strconv/types.ha b/strconv/types.ha
index a62e0ff0..be8077b8 100644
--- a/strconv/types.ha
+++ b/strconv/types.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Andri Yngvason <andri@yngvason.is>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
// Indicates that the input string doesn't have the requested number format
// (integer or float). Contains the index of the first invalid rune.
export type invalid = !size;
diff --git a/strconv/utos.ha b/strconv/utos.ha
index d55af8f9..8435008a 100644
--- a/strconv/utos.ha
+++ b/strconv/utos.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Andri Yngvason <andri@yngvason.is>
-// (c) 2021 Armin Weigl <tb46305@gmail.com>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use bytes;
use types;
diff --git a/strings/concat.ha b/strings/concat.ha
index b7cc6755..e1d4df7b 100644
--- a/strings/concat.ha
+++ b/strings/concat.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// Concatenates two or more strings. The caller must free the return value.
export fn concat(strs: str...) str = {
let z = 0z;
diff --git a/strings/contains.ha b/strings/contains.ha
index 65212385..566cd500 100644
--- a/strings/contains.ha
+++ b/strings/contains.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Vlad-Stefan Harbuz <vlad@vladh.net>
use bytes;
use encoding::utf8;
diff --git a/strings/dup.ha b/strings/dup.ha
index a0cbe4c5..d2100e72 100644
--- a/strings/dup.ha
+++ b/strings/dup.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use types;
// Duplicates a string. Aborts on allocation failure.
diff --git a/strings/index.ha b/strings/index.ha
index aecfac00..acdb82a8 100644
--- a/strings/index.ha
+++ b/strings/index.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Vlad-Stefan Harbuz <vlad@vladh.net>
use bytes;
use encoding::utf8;
diff --git a/strings/iter.ha b/strings/iter.ha
index 47fde6e5..2df0843d 100644
--- a/strings/iter.ha
+++ b/strings/iter.ha
@@ -1,9 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Ajay R <ar324@protonmail.com>
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Miccah Castorina <contact@miccah.io>
use encoding::utf8;
export type iterator = struct {
diff --git a/strings/pad.ha b/strings/pad.ha
index 4dc91717..530f771c 100644
--- a/strings/pad.ha
+++ b/strings/pad.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Vlad-Stefan Harbuz <vlad@vladh.net>
use encoding::utf8;
// Pads a string's start with 'prefix' until it reaches length 'target_len'.
diff --git a/strings/replace.ha b/strings/replace.ha
index 146dc7c8..6febaf19 100644
--- a/strings/replace.ha
+++ b/strings/replace.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Vlad-Stefan Harbuz <vlad@vladh.net>
-
use bytes;
// Returns a new string duplicated from 's', but with all instances of 'needle'
diff --git a/strings/runes.ha b/strings/runes.ha
index 0a152c4e..2e1ac396 100644
--- a/strings/runes.ha
+++ b/strings/runes.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Byron Torres <b@torresjrjr.com>
use encoding::utf8;
// Returns a slice of runes for a string in O(n). The caller must free the
diff --git a/strings/sub.ha b/strings/sub.ha
index 5f069a59..7ad6ab2c 100644
--- a/strings/sub.ha
+++ b/strings/sub.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Andri Yngvason <andri@yngvason.is>
-// (c) 2021-2022 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use encoding::utf8;
export type end = void;
diff --git a/strings/suffix.ha b/strings/suffix.ha
index af2a5959..a4d47e7c 100644
--- a/strings/suffix.ha
+++ b/strings/suffix.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Thomas Bracht Laumann Jespersen <t@laumann.xyz>
use bytes;
use encoding::utf8;
diff --git a/strings/template/template.ha b/strings/template/template.ha
index 8fa1d1ec..b06f02cd 100644
--- a/strings/template/template.ha
+++ b/strings/template/template.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
use ascii;
use errors;
use fmt;
diff --git a/strings/tokenize.ha b/strings/tokenize.ha
index 05325478..1bcd50c7 100644
--- a/strings/tokenize.ha
+++ b/strings/tokenize.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Bor Grošelj Simić <bor.groseljsimic@telemach.net>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
use bytes;
use types;
diff --git a/strings/trim.ha b/strings/trim.ha
index a6652165..bf68d6ab 100644
--- a/strings/trim.ha
+++ b/strings/trim.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Miccah Castorina <contact@miccah.io>
-// (c) 2021 Sudipto Mallick <smlckz@disroot.org>
use bytes;
use encoding::utf8;
diff --git a/strings/utf8.ha b/strings/utf8.ha
index 8cabd370..93691cdb 100644
--- a/strings/utf8.ha
+++ b/strings/utf8.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
use encoding::utf8;
use types;
diff --git a/temp/+freebsd.ha b/temp/+freebsd.ha
index 4112c768..72030687 100644
--- a/temp/+freebsd.ha
+++ b/temp/+freebsd.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Jon Eskin <eskinjp@gmail.com>
use crypto::random;
use encoding::hex;
use errors;
diff --git a/temp/+linux.ha b/temp/+linux.ha
index 92e73ecc..190c261b 100644
--- a/temp/+linux.ha
+++ b/temp/+linux.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021-2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2022 Jon Eskin <eskinjp@gmail.com>
use crypto::random;
use encoding::hex;
use errors;
diff --git a/time/+freebsd/functions.ha b/time/+freebsd/functions.ha
index eaf52d5c..7aa2199e 100644
--- a/time/+freebsd/functions.ha
+++ b/time/+freebsd/functions.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use rt;
// Converts a [[duration]] to an [[rt::timespec]]. This function is
diff --git a/time/+linux/+aarch64.ha b/time/+linux/+aarch64.ha
index 8a7922fd..020687f3 100644
--- a/time/+linux/+aarch64.ha
+++ b/time/+linux/+aarch64.ha
@@ -1,5 +1,2 @@
-// License: MPL-2.0
-// (c) 2021 Mykyta Holubakha <hilobakho@gmail.com>
-
def VDSO_CGT_SYM: str = "__kernel_clock_gettime";
def VDSO_CGT_VER: str = "LINUX_2.6.39";
diff --git a/time/+linux/+riscv64.ha b/time/+linux/+riscv64.ha
index 9653d429..c58bb3d3 100644
--- a/time/+linux/+riscv64.ha
+++ b/time/+linux/+riscv64.ha
@@ -1,5 +1,2 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
def VDSO_CGT_SYM: str = "__kernel_clock_gettime";
def VDSO_CGT_VER: str = "LINUX_4.15";
diff --git a/time/+linux/+x86_64.ha b/time/+linux/+x86_64.ha
index 0c846d20..814ca09e 100644
--- a/time/+linux/+x86_64.ha
+++ b/time/+linux/+x86_64.ha
@@ -1,5 +1,2 @@
-// License: MPL-2.0
-// (c) 2021 Mykyta Holubakha <hilobakho@gmail.com>
-
def VDSO_CGT_SYM: str = "__vdso_clock_gettime";
def VDSO_CGT_VER: str = "LINUX_2.6";
diff --git a/time/+linux/functions.ha b/time/+linux/functions.ha
index 75eaa880..f71cdba2 100644
--- a/time/+linux/functions.ha
+++ b/time/+linux/functions.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Mykyta Holubakha <hilobakho@gmail.com>
use rt;
use linux::vdso;
diff --git a/time/arithm.ha b/time/arithm.ha
index c4445f81..42aa308e 100644
--- a/time/arithm.ha
+++ b/time/arithm.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Byron Torres <b@torresjrjr.com>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use math;
// Adds a [[duration]] to an [[instant]], returning an instant further in the
diff --git a/time/chrono/+freebsd.ha b/time/chrono/+freebsd.ha
index cdafe82f..84e228f1 100644
--- a/time/chrono/+freebsd.ha
+++ b/time/chrono/+freebsd.ha
@@ -1,5 +1,2 @@
-// License: MPL-2.0
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
-
def LOCALTIME_PATH: str = "/etc/localtime";
def ZONEINFO_PREFIX: str = "/usr/share/zoneinfo/";
diff --git a/time/chrono/+linux.ha b/time/chrono/+linux.ha
index cdafe82f..84e228f1 100644
--- a/time/chrono/+linux.ha
+++ b/time/chrono/+linux.ha
@@ -1,5 +1,2 @@
-// License: MPL-2.0
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
-
def LOCALTIME_PATH: str = "/etc/localtime";
def ZONEINFO_PREFIX: str = "/usr/share/zoneinfo/";
diff --git a/time/chrono/arithmetic.ha b/time/chrono/arithmetic.ha
index 47ca1ab7..55598295 100644
--- a/time/chrono/arithmetic.ha
+++ b/time/chrono/arithmetic.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2023 Byron Torres <b@torresjrjr.com>
use time;
// Compares two [[moment]]s. Returns -1 if a precedes b, 0 if a and b are
diff --git a/time/chrono/chronology.ha b/time/chrono/chronology.ha
index e86764a2..2e886013 100644
--- a/time/chrono/chronology.ha
+++ b/time/chrono/chronology.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Byron Torres <b@torresjrjr.com>
use time;
// Invalid [[moment]].
diff --git a/time/chrono/error.ha b/time/chrono/error.ha
index 78876f5b..4fdf94bd 100644
--- a/time/chrono/error.ha
+++ b/time/chrono/error.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Byron Torres <b@torresjrjr.com>
use encoding::utf8;
use fmt;
use fs;
diff --git a/time/chrono/leapsec.ha b/time/chrono/leapsec.ha
index afe2de34..f9b25b09 100644
--- a/time/chrono/leapsec.ha
+++ b/time/chrono/leapsec.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Byron Torres <b@torresjrjr.com>
use bufio;
use encoding::utf8;
use fs;
diff --git a/time/chrono/timescale.ha b/time/chrono/timescale.ha
index 0137a0d4..41c950a0 100644
--- a/time/chrono/timescale.ha
+++ b/time/chrono/timescale.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Byron Torres <b@torresjrjr.com>
use time;
// Represents a scale of time; a time standard. See [[convert]].
diff --git a/time/chrono/timezone.ha b/time/chrono/timezone.ha
index 9051b6f9..21b7dc3e 100644
--- a/time/chrono/timezone.ha
+++ b/time/chrono/timezone.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Byron Torres <b@torresjrjr.com>
use bufio;
use io;
use os;
diff --git a/time/chrono/tzdb.ha b/time/chrono/tzdb.ha
index 5a1794a2..c52adb57 100644
--- a/time/chrono/tzdb.ha
+++ b/time/chrono/tzdb.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Byron Torres <b@torresjrjr.com>
use bufio;
use bytes;
use encoding::utf8;
diff --git a/time/date/date.ha b/time/date/date.ha
index aeb374cb..325f64f0 100644
--- a/time/date/date.ha
+++ b/time/date/date.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Byron Torres <b@torresjrjr.com>
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
use time;
use time::chrono;
diff --git a/time/date/daydate.ha b/time/date/daydate.ha
index ce77e502..436e943a 100644
--- a/time/date/daydate.ha
+++ b/time/date/daydate.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Byron Torres <b@torresjrjr.com>
-// (c) 2021-2022 Vlad-Stefan Harbuz <vlad@vladh.net>
-
// Hare internally uses the Unix epoch (1970-01-01) for calendrical logic. Here
// we provide useful constant for working with the astronomically numbered
// proleptic Gregorian calendar, as offsets from the Hare epoch.
diff --git a/time/date/daytime.ha b/time/date/daytime.ha
index cdcfdf15..ec19cbd8 100644
--- a/time/date/daytime.ha
+++ b/time/date/daytime.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Byron Torres <b@torresjrjr.com>
use time;
// Calculates the wall clock (hour, minute, second, nanosecond),
diff --git a/time/date/error.ha b/time/date/error.ha
index 78ee7cdc..57198a99 100644
--- a/time/date/error.ha
+++ b/time/date/error.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2023 Byron Torres <b@torresjrjr.com>
-
// All possible errors returned from [[date]].
export type error = !(insufficient | invalid | parsefail);
diff --git a/time/date/format.ha b/time/date/format.ha
index 72a9fd98..647ed46a 100644
--- a/time/date/format.ha
+++ b/time/date/format.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Byron Torres <b@torresjrjr.com>
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021-2022 Vlad-Stefan Harbuz <vlad@vladh.net>
use ascii;
use fmt;
use io;
diff --git a/time/date/locality.ha b/time/date/locality.ha
index eb7ea52b..23c0c461 100644
--- a/time/date/locality.ha
+++ b/time/date/locality.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Byron Torres <b@torresjrjr.com>
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
use time;
use time::chrono;
diff --git a/time/date/observe.ha b/time/date/observe.ha
index c64f6e54..9b250d2d 100644
--- a/time/date/observe.ha
+++ b/time/date/observe.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Byron Torres <b@torresjrjr.com>
use time::chrono;
// These functions are renamed to avoid namespace conflicts, like in the
diff --git a/time/date/parithm.ha b/time/date/parithm.ha
index 5ddc24c6..42bd3b4f 100644
--- a/time/date/parithm.ha
+++ b/time/date/parithm.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Byron Torres <b@torresjrjr.com>
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021-2022 Vlad-Stefan Harbuz <vlad@vladh.net>
use fmt;
use math;
use time;
diff --git a/time/date/parse.ha b/time/date/parse.ha
index 56f0579c..1e18f99e 100644
--- a/time/date/parse.ha
+++ b/time/date/parse.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Byron Torres <b@torresjrjr.com>
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
-// (c) 2021-2022 Vlad-Stefan Harbuz <vlad@vladh.net>
use ascii;
use io;
use strconv;
diff --git a/time/date/period.ha b/time/date/period.ha
index d0c8bc8d..453da090 100644
--- a/time/date/period.ha
+++ b/time/date/period.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2023 Byron Torres <b@torresjrjr.com>
-
// Represents a span of time in the Gregorian chronology, using nominal units of
// time. Used for chronological arithmetic.
export type period = struct {
diff --git a/time/date/reckon.ha b/time/date/reckon.ha
index fe4374a5..79401d69 100644
--- a/time/date/reckon.ha
+++ b/time/date/reckon.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2023 Byron Torres <b@torresjrjr.com>
use time;
use time::chrono;
diff --git a/time/date/tarithm.ha b/time/date/tarithm.ha
index f8591977..69a5f7ed 100644
--- a/time/date/tarithm.ha
+++ b/time/date/tarithm.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2023 Byron Torres <b@torresjrjr.com>
use time;
// Adds a [[time::duration]] to a [[date]] with [[time::add]]. This is a
diff --git a/time/date/virtual.ha b/time/date/virtual.ha
index f31d400c..bf1be287 100644
--- a/time/date/virtual.ha
+++ b/time/date/virtual.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Byron Torres <b@torresjrjr.com>
use time;
use time::chrono;
diff --git a/time/types.ha b/time/types.ha
index 5228854c..6137c8ec 100644
--- a/time/types.ha
+++ b/time/types.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use types;
// The elapsed time between two instants, in nanoseconds. The largest
diff --git a/types/arch+aarch64.ha b/types/arch+aarch64.ha
index d8538ba4..f555dc0d 100644
--- a/types/arch+aarch64.ha
+++ b/types/arch+aarch64.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// Minimum value which can be stored in an int type.
export def INT_MIN: int = I32_MIN;
diff --git a/types/arch+riscv64.ha b/types/arch+riscv64.ha
index d8538ba4..f555dc0d 100644
--- a/types/arch+riscv64.ha
+++ b/types/arch+riscv64.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// Minimum value which can be stored in an int type.
export def INT_MIN: int = I32_MIN;
diff --git a/types/arch+x86_64.ha b/types/arch+x86_64.ha
index d8538ba4..f555dc0d 100644
--- a/types/arch+x86_64.ha
+++ b/types/arch+x86_64.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// Minimum value which can be stored in an int type.
export def INT_MIN: int = I32_MIN;
diff --git a/types/classes.ha b/types/classes.ha
index 4b98d017..b466de4a 100644
--- a/types/classes.ha
+++ b/types/classes.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-
// A tagged union of all signed integer types.
export type signed = (i8 | i16 | i32 | i64 | int);
diff --git a/types/limits.ha b/types/limits.ha
index 48fad552..c0c66fca 100644
--- a/types/limits.ha
+++ b/types/limits.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Sudipto Mallick <smlckz@disroot.org>
-
// Minimum value which can be stored in an i8 type.
export def I8_MIN: i8 = -128;
diff --git a/unix/+freebsd/getuid.ha b/unix/+freebsd/getuid.ha
index f5be0b4d..da0d9ac2 100644
--- a/unix/+freebsd/getuid.ha
+++ b/unix/+freebsd/getuid.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use rt;
// Returns the current process user ID.
diff --git a/unix/+freebsd/nice.ha b/unix/+freebsd/nice.ha
index 7ea10ecf..27ad7234 100644
--- a/unix/+freebsd/nice.ha
+++ b/unix/+freebsd/nice.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use rt;
diff --git a/unix/+freebsd/pipe.ha b/unix/+freebsd/pipe.ha
index 1dd04662..e4c314dd 100644
--- a/unix/+freebsd/pipe.ha
+++ b/unix/+freebsd/pipe.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use io;
use rt;
diff --git a/unix/+freebsd/setuid.ha b/unix/+freebsd/setuid.ha
index 5c379535..fe6b8d36 100644
--- a/unix/+freebsd/setuid.ha
+++ b/unix/+freebsd/setuid.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use rt;
// Sets the caller's user ID to the specified value. This generally requires
diff --git a/unix/+freebsd/umask.ha b/unix/+freebsd/umask.ha
index dba1eec3..6453f0e7 100644
--- a/unix/+freebsd/umask.ha
+++ b/unix/+freebsd/umask.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use fs;
use rt;
diff --git a/unix/+linux/getuid.ha b/unix/+linux/getuid.ha
index f5be0b4d..da0d9ac2 100644
--- a/unix/+linux/getuid.ha
+++ b/unix/+linux/getuid.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
use rt;
// Returns the current process user ID.
diff --git a/unix/+linux/nice.ha b/unix/+linux/nice.ha
index 7ea10ecf..27ad7234 100644
--- a/unix/+linux/nice.ha
+++ b/unix/+linux/nice.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use rt;
diff --git a/unix/+linux/pipe.ha b/unix/+linux/pipe.ha
index 50b84806..e4c314dd 100644
--- a/unix/+linux/pipe.ha
+++ b/unix/+linux/pipe.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use io;
use rt;
diff --git a/unix/+linux/setuid.ha b/unix/+linux/setuid.ha
index 5c379535..fe6b8d36 100644
--- a/unix/+linux/setuid.ha
+++ b/unix/+linux/setuid.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use rt;
// Sets the caller's user ID to the specified value. This generally requires
diff --git a/unix/+linux/umask.ha b/unix/+linux/umask.ha
index c344f96e..f8da3538 100644
--- a/unix/+linux/umask.ha
+++ b/unix/+linux/umask.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Umar Getagazov <umar@handlerug.me>
use fs;
use rt;
diff --git a/unix/hosts/+freebsd.ha b/unix/hosts/+freebsd.ha
index 69220e9e..f18145ea 100644
--- a/unix/hosts/+freebsd.ha
+++ b/unix/hosts/+freebsd.ha
@@ -1,4 +1 @@
-// License: MPL-2.0
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
-
def PATH: str = "/etc/hosts";
diff --git a/unix/hosts/+linux.ha b/unix/hosts/+linux.ha
index 69220e9e..f18145ea 100644
--- a/unix/hosts/+linux.ha
+++ b/unix/hosts/+linux.ha
@@ -1,4 +1 @@
-// License: MPL-2.0
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
-
def PATH: str = "/etc/hosts";
diff --git a/unix/hosts/hosts.ha b/unix/hosts/hosts.ha
index e8913984..8d5e5d30 100644
--- a/unix/hosts/hosts.ha
+++ b/unix/hosts/hosts.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2023 Dmitry Matveyev <public@greenfork.me>
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use bufio;
use encoding::utf8;
use fs;
diff --git a/unix/hosts/test+test.ha b/unix/hosts/test+test.ha
index 138fb7df..d119993f 100644
--- a/unix/hosts/test+test.ha
+++ b/unix/hosts/test+test.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2023 Dmitry Matveyev <public@greenfork.me>
use io;
use memio;
use net::ip;
diff --git a/unix/passwd/group.ha b/unix/passwd/group.ha
index 8d0f9995..a74f552f 100644
--- a/unix/passwd/group.ha
+++ b/unix/passwd/group.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use bufio;
use io;
use memio;
diff --git a/unix/passwd/passwd.ha b/unix/passwd/passwd.ha
index 7fd77038..ceb6902f 100644
--- a/unix/passwd/passwd.ha
+++ b/unix/passwd/passwd.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021-2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use bufio;
use io;
use memio;
diff --git a/unix/passwd/types.ha b/unix/passwd/types.ha
index a5030d76..c3928cc5 100644
--- a/unix/passwd/types.ha
+++ b/unix/passwd/types.ha
@@ -1,6 +1,2 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-
// An invalid entry was encountered during parsing.
export type invalid = !void;
diff --git a/unix/poll/+freebsd.ha b/unix/poll/+freebsd.ha
index a0dcb246..8ce861ab 100644
--- a/unix/poll/+freebsd.ha
+++ b/unix/poll/+freebsd.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use io;
use rt;
diff --git a/unix/poll/+linux.ha b/unix/poll/+linux.ha
index 7ac7207d..e0784915 100644
--- a/unix/poll/+linux.ha
+++ b/unix/poll/+linux.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use io;
use rt;
diff --git a/unix/resolvconf/+freebsd.ha b/unix/resolvconf/+freebsd.ha
index d96f585a..2c15c339 100644
--- a/unix/resolvconf/+freebsd.ha
+++ b/unix/resolvconf/+freebsd.ha
@@ -1,4 +1 @@
-// License: MPL-2.0
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
-
def PATH: str = "/etc/resolv.conf";
diff --git a/unix/resolvconf/+linux.ha b/unix/resolvconf/+linux.ha
index d96f585a..2c15c339 100644
--- a/unix/resolvconf/+linux.ha
+++ b/unix/resolvconf/+linux.ha
@@ -1,4 +1 @@
-// License: MPL-2.0
-// (c) 2022 Sebastian <sebastian@sebsite.pw>
-
def PATH: str = "/etc/resolv.conf";
diff --git a/unix/resolvconf/load.ha b/unix/resolvconf/load.ha
index ddf97216..685490c1 100644
--- a/unix/resolvconf/load.ha
+++ b/unix/resolvconf/load.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use bufio;
use io;
use memio;
diff --git a/unix/signal/+linux.ha b/unix/signal/+linux.ha
index 4a2f2f44..a56173eb 100644
--- a/unix/signal/+linux.ha
+++ b/unix/signal/+linux.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
use errors;
use io;
use rt;
diff --git a/unix/signal/types.ha b/unix/signal/types.ha
index 7883ac1b..cb9b52ab 100644
--- a/unix/signal/types.ha
+++ b/unix/signal/types.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Drew DeVault <sir@cmpwn.com>
-
// A function which handles a signal. The first argument is the signal number
// which was caught, the second provides information about the signal, and the
// third argument is the ucontext, which is usually ignored by most signal
diff --git a/unix/tty/+freebsd/isatty.ha b/unix/tty/+freebsd/isatty.ha
index 6924f3b6..3b55083e 100644
--- a/unix/tty/+freebsd/isatty.ha
+++ b/unix/tty/+freebsd/isatty.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use rt;
use io;
use os;
diff --git a/unix/tty/+freebsd/open.ha b/unix/tty/+freebsd/open.ha
index abe9a838..1a4d2e14 100644
--- a/unix/tty/+freebsd/open.ha
+++ b/unix/tty/+freebsd/open.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use fs;
use io;
diff --git a/unix/tty/+freebsd/pty.ha b/unix/tty/+freebsd/pty.ha
index 4ca761d5..35ac044a 100644
--- a/unix/tty/+freebsd/pty.ha
+++ b/unix/tty/+freebsd/pty.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Re Elbertson <citrons@mondecitronne.com>
use errors;
use fmt;
use fs;
diff --git a/unix/tty/+freebsd/termios.ha b/unix/tty/+freebsd/termios.ha
index 0120306f..23420977 100644
--- a/unix/tty/+freebsd/termios.ha
+++ b/unix/tty/+freebsd/termios.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use io;
use rt;
use errors;
diff --git a/unix/tty/+freebsd/winsize.ha b/unix/tty/+freebsd/winsize.ha
index 9d340e4b..97b3f6a2 100644
--- a/unix/tty/+freebsd/winsize.ha
+++ b/unix/tty/+freebsd/winsize.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use errors;
use io;
use os;
diff --git a/unix/tty/+linux/isatty.ha b/unix/tty/+linux/isatty.ha
index ecc3419a..3b55083e 100644
--- a/unix/tty/+linux/isatty.ha
+++ b/unix/tty/+linux/isatty.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Kiëd Llaentenn <kiedtl@tilde.team>
use rt;
use io;
use os;
diff --git a/unix/tty/+linux/open.ha b/unix/tty/+linux/open.ha
index 10ef8edb..1a4d2e14 100644
--- a/unix/tty/+linux/open.ha
+++ b/unix/tty/+linux/open.ha
@@ -1,8 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Kiëd Llaentenn <kiedtl@tilde.team>
use errors;
use fs;
use io;
diff --git a/unix/tty/+linux/pty.ha b/unix/tty/+linux/pty.ha
index 64d2bf07..3c7b2a65 100644
--- a/unix/tty/+linux/pty.ha
+++ b/unix/tty/+linux/pty.ha
@@ -1,5 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Re Elbertson <citrons@mondecitronne.com>
use errors;
use fmt;
use fs;
diff --git a/unix/tty/+linux/termios.ha b/unix/tty/+linux/termios.ha
index 356ff64e..a7e71881 100644
--- a/unix/tty/+linux/termios.ha
+++ b/unix/tty/+linux/termios.ha
@@ -1,6 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
// TODO: Not in love with this interface
use io;
use rt;
diff --git a/unix/tty/+linux/winsize.ha b/unix/tty/+linux/winsize.ha
index 884d78ec..920b14b9 100644
--- a/unix/tty/+linux/winsize.ha
+++ b/unix/tty/+linux/winsize.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Kiëd Llaentenn <kiedtl@tilde.team>
use errors;
use io;
use os;
diff --git a/unix/tty/types.ha b/unix/tty/types.ha
index 01f629b5..3bc6a38a 100644
--- a/unix/tty/types.ha
+++ b/unix/tty/types.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2021 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
-// (c) 2021 Kiëd Llaentenn <kiedtl@tilde.team>
use errors;
// Any error that may occur during TTY-related tasks.
diff --git a/uuid/uuid.ha b/uuid/uuid.ha
index faa0c491..605d4d98 100644
--- a/uuid/uuid.ha
+++ b/uuid/uuid.ha
@@ -1,7 +1,3 @@
-// License: MPL-2.0
-// (c) 2022 Alexey Yerin <yyp@disroot.org>
-// (c) 2021 Drew DeVault <sir@cmpwn.com>
-// (c) 2021 Ember Sawady <ecs@d2evs.net>
use bytes;
use crypto::random;
use endian;
--
2.42.0