vibe.d beta banner
get vibe.d

Asynchronous I/O that doesn’t get in your way, written in D

Function runApplication

Performs final initialization and runs the event loop.

int runApplication (
  scope void delegate(string[]) args_out = cast(void delegate(string[]))null

This function performs three tasks:

  1. Makes sure that no unrecognized command line options are passed to the application and potentially displays command line help. See also finalizeCommandLineOptions.
  2. Performs privilege lowering if required.
  3. Runs the event loop and blocks until it finishes.


args_out Optional parameter to receive unrecognized command line arguments. If left to null, an error will be reported if any unrecognized argument is passed.

See also

finalizeCommandLineOptions, lowerPrivileges, runEventLoop


A simple echo server, listening on a privileged TCP port.

import vibe.core.core;

int main()
	// first, perform any application specific setup (privileged ports still
	// available if run as root)
	listenTCP(7, (conn) { conn.write(conn); });

	// then use runApplication to perform the remaining initialization and
	// to run the event loop
	return runApplication();


The same as above, but performing the initialization sequence manually.

This allows to skip any additional initialization (opening the listening port) if an invalid command line argument or the --help switch is passed to the application.

import vibe.core.core;

int main()
	// process the command line first, to be able to skip the application
	// setup if not required
	if (!finalizeCommandLineOptions()) return 0;

	// then set up the application
	listenTCP(7, (conn) { conn.write(conn); });

	// finally, perform privilege lowering (safe to skip for non-server
	// applications)

	// and start the event loop
	return runEventLoop();

Sönke Ludwig


© 2012-2016 RejectedSoftware e.K.


Subject to the terms of the MIT license, as written in the included LICENSE.txt file.