Notice: This project is under active development. Please do not share this website with others until we believe it's ready for broader distribution. Feel free to try out the language and provide feedback as you see fit, but keep it to yourself and your colleagues. For an introduction to Hare with considerations to its work-in-progress status, see the sourcehut project.

Hare is a systems programming language designed to be simple and robust. Hare uses a static type system, manual memory management, and a minimal runtime. It is well-suited to writing operating systems, system tools, compilers, networking software, and other low-level, high performance tasks.

Hare fits on a 3½" floppy disc, which are available for purchase.

use io;

export fn main() void = {
	const greetings = [
		"Hello, world!",
		"¡Hola Mundo!",
		"Γειά σου Κόσμε!",
		"Привет, мир!",
		"こんにちは世界!",
	];
	for (let i = 0z; i < len(greetings); i += 1) {
		io::println(greetings[i]);
	};
};

Hare is considered suitable for production use today. (It will be before the public release)

Getting started

Read the installation steps to get Hare for your system, then read the tutorial. To see if Hare is available for your system, consult the supported platforms list.

Design principles

  1. Trust the programmer.
  2. Provide tools the programmer may use when they don't trust themselves.
  3. Prefer explicit behavior over implicit behavior.
  4. A good program must be both correct and simple.