The OpenD Programming Language

Get Started Now

The programming language that...

Boosts your productivity out-of-the-box.

With hundreds of library modules included, opening a window and starting a web server are just as easy as printing hello to the console.

Graphics window

	import arsd.simpledisplay;

	void main() {
		auto window = new SimpleWindow("Hello!");

		window.eventLoop(0);
	}
	
Web server

	import arsd.cgi;

	void handler(Cgi cgi) {

	}

	mixin GenericMain!handler;
	

Search library documentation here or browse the index of included modules here.

Have questions? We're happy to help.

Meets you where you are and joins you where you're going.

From high-level, mathematics-inspired code to low-level, machine-gripping code, and everything in between, all in the same language. Open D is an all-purpose programming language built on familiar concepts and syntax.

Move the slider from one side to the other to see some examples, and remember, you can mix and match these styles in the same program, even the same file!

// inline asm supported
void _start() {
	asm {
		naked; // full control over the function's stack frame
		mov RAX, 3;
		mov ECX, 11;
		syscall;
	}
}
// C-style pointers supported
void main() {
	ubyte* vgaText = cast(ubyte*) 0xB8000;
	vgaText[0] = 'B';
}
// Convenient, garbage-collected strings and arrays
void main() {
	string text = "Hello, ";
	text ~= "world!"; // append operator
}
// pipeline style range programming supported
import std;
void main() {
	[1, 2, 3]
		.map!(x => x ^^ 2)
		.filter!(x => x % 2 == 0)
		.writeln;
}
// annotation-based declarative programming
import arsd.minigui;
class Commands {
	@menu("File")
	void Open() {}
}
void main() {
	auto window = new MainWindow();
	window.addMenuAndToolbarFromAnnotatedCode(new Commands());
	window.loop();
}
// dynamic, Javascript-type code
import arsd.jsvar;
void main() {
	var a = 5;
	a = "foo";
	a = var.emptyObject;
	a["bar"] = 9;
	assert(a.bar == 9);
}

See language documentation here.

Welcomes YOUR contribution!

Programming languages are just the core of thriving ecosystems and best when people work together. Productivity boosters are often library code rather than language features, but language features can be the difference between a good library and a great library.

That's why Open D is open - to soar to greatness, we need your help! Have an idea? Let's talk about it. Have some code you want to contribute? Let's work together to get it in.

Of course, we do have to be careful not to break other people's work, so not everything can be accepted, but we'll do what we can to help each other improve the programming experience for everybody.

See the development plan here.

Open D is a fork of Walter Bright's D Programming Language. If you already know Walter's D, you can see the list of changes here and planned future directions here.

Ready to try it?

Get started now!