Janet is a functional and imperative programming language. It runs on Windows, Linux, macOS, BSDs, and should run on other systems with some porting. The entire language (core library, interpreter, compiler, assembler, PEG) is less than 1MB. You can also add Janet scripting to an application by embedding a single C file and two headers.
Feel free to ask questions and join discussion on the Janet Gitter Channel. Gitter provides matrix and IRC bridges as well for users who prefer those.
We use GitHub Discussions as our forum, which is more suited to long-form discussion than Gitter.
For help, you can also check out Janet Docs for Janet documentation with user-provided examples. Feel free to contribute your own examples here to help fellow programmers.
Janet makes a good system scripting language, or a language to embed in other programs. Think Lua or Guile. Janet also can be used for rapid prototyping, dynamic systems, and other domains where dynamic languages shine. Implemented mostly in standard C99, Janet runs on Windows, Linux and macOS. The few features that are not standard C (dynamic library loading, compiler specific optimizations), are fairly straightforward. Janet can be easily ported to new platforms.
A REPL is launched when the janet
binary is invoked with no arguments. Pass the -h
flag
to display the usage information. Individual scripts can be run with janet myscript.janet
If you are looking to explore, you can print a list of all available macros, functions, and constants
by entering the command all-bindings
into the REPL.
$ janet
Janet 1.0.0-dev-cc1ff91 Copyright (C) 2017-2019 Calvin Rose
janet:0:> (+ 1 2 3)
6
janet:10:> (print "Hello, world!")
Hello, world!
nil
janet:34:> (os/exit)
$ janet -h
usage: janet [options] script args...
Options are:
-h : Show this help
-v : Print the version string
-s : Use raw stdin instead of getline like functionality
-e code : Execute a string of janet
-r : Enter the repl after running all scripts
-p : Keep on executing if there is a top level error (persistent)
-q : Hide prompt, logo, and repl output (quiet)
-k : Compile scripts but do not execute
-m syspath : Set system path for loading global modules
-c source output : Compile janet source code into an image
-n : Disable ANSI color output in the repl
-l path : Execute code in a file before running the main script
-- : Stop handling options
See some auxiliary projects on GitHub. Here is a short list of libraries
for Janet to help you get started with some interesting stuff. See the Janet Package Listing
for a more complete list. Packages in the listing can be installed via jpm install pkg-name
.
For editor support: