This commit is contained in:
Radon Rosborough 2020-09-02 08:15:31 -06:00
parent 84707457fc
commit 21fffe3326
1 changed files with 622 additions and 10 deletions

View File

@ -1,6 +1,37 @@
type Category = "assembly" | "config" | "data" | "database" | "editor" | "esoteric" | "general" | "markup" | "pure" | "shell" | "tool"
type Mode = "compiled" | "interpreted"
type Platform = "bf" | "clr" | "js" | "jvm" | "python" | "windows"
type Syntax = "assembly" | "basic" | "c" | "golf" | "haskell" | "lisp" | "pascal" | "python" | "text" | "tokens" | "2d" | "column" | "extensible" | "foreign" | "symbol" | "whitespace"
type Typing = "static" | "dynamic" | "theorem" | "float" | "integer" | "lambda" | "string" | "weak"
type Paradigm = "array" | "declarative" | "functional" | "imperative" | "oo" | "stack" | "turing"
type Usage = "abandoned" | "personal" | "popular"
type Some<T> = T | T[];
export interface LangConfig {
aliases?: string[];
name: string;
info?: {
impl?: string;
version?: string;
year: number;
desc: string;
ext: Some<string>;
web: {
wiki?: string;
esolang?: string;
home?: string;
impl?: string;
source: string | null;
};
category: Some<Category>;
mode: Some<Mode>;
platform: Some<Platform>;
syntax: Some<Syntax>;
typing: Some<Typing>;
paradigm: Some<Paradigm>;
usage: Some<Usage>;
}
monacoLang?: string;
daemon?: string;
setup?: string;
@ -52,10 +83,30 @@ export interface LangConfig {
skip?: string[];
}
// Popular languages: https://pypl.github.io/PYPL.html
//
// (All 28 languages listed are on Riju, except Object Pascal and VBA.)
export const langs: { [key: string]: LangConfig } = {
"><>": {
aliases: ["esofish"],
name: "><>",
info: {
year: 2009,
desc: "Stack-based, reflective, two-dimensional esoteric programming language",
ext: "fish",
web: {
esolang: "https://esolangs.org/wiki/Fish",
source: "https://gist.github.com/anonymous/6392418",
},
category: "esoteric",
mode: "interpreted",
platform: [],
syntax: ["golf", "2d"],
typing: "float",
paradigm: "stack",
usage: [],
},
main: "main.fish",
run: "esofish main.fish",
template: `"Hello, world!"r\\
@ -63,8 +114,27 @@ export const langs: { [key: string]: LangConfig } = {
`,
},
ada: {
aliases: ["adb"],
aliases: ["adb", "gnat"],
name: "Ada",
info: {
impl: "GNAT",
year: 1980,
desc: "Structured, statically typed, imperative, and object-oriented high-level programming language, extended from Pascal and other languages",
ext: ["adb", "ads"],
web: {
wiki: "https://en.wikipedia.org/wiki/Ada_(programming_language)",
home: "https://www.adaic.org/",
impl: "https://www.gnu.org/software/gnat/",
source: "https://gcc.gnu.org/git.html",
},
category: "general",
mode: "compiled",
platform: [],
syntax: "pascal",
typing: "static",
paradigm: ["imperative", "oo"],
usage: "popular",
},
main: "main.adb",
compile: "x86_64-linux-gnu-gnatmake-9 main.adb",
run: "./main",
@ -84,8 +154,27 @@ end Main;
`,
},
algol: {
aliases: ["alg"],
aliases: ["alg", "a68g", "genie", "a68genie"],
name: "ALGOL 68",
info: {
impl: "ALGOL 68 Genie",
version: "ALGOL 68",
year: 1958,
desc: "Seminal imperative programming language which introduced lexical scope and formal grammar specification",
ext: "alg",
web: {
wiki: "https://en.wikipedia.org/wiki/ALGOL",
home: "http://algol68.sourceforge.net/",
source: "https://jmvdveer.home.xs4all.nl/en.algol-68-genie.html",
},
category: "general",
mode: ["interpreted", "compiled"],
platform: [],
syntax: "pascal",
typing: "static",
paradigm: "imperative",
usage: [],
},
main: "main.alg",
run: "a68g main.alg",
template: `print(("Hello, world!",new line))
@ -93,6 +182,24 @@ end Main;
},
apl: {
name: "APL",
info: {
impl: "GNU APL",
year: 1966,
desc: "Array-based programming language using large range of special symbols for concision",
ext: "apl",
web: {
wiki: "https://en.wikipedia.org/wiki/APL_(programming_language)",
impl: "https://www.gnu.org/software/apl/",
source: "https://savannah.gnu.org/svn/?group=apl",
},
category: ["general"],
mode: "interpreted",
platform: [],
syntax: ["golf", "symbol"],
typing: "dynamic",
paradigm: ["array", "functional", "imperative"],
usage: [],
},
repl: "apl",
input: "123 × 234",
main: "main.apl",
@ -105,6 +212,25 @@ end Main;
},
arm: {
name: "ARM",
info: {
impl: "GCC",
year: 1985,
desc: "Popular RISC architecture used in mobile devices",
ext: "S",
web: {
wiki: "https://en.wikipedia.org/wiki/ARM_architecture",
home: "https://developer.arm.com/architectures/cpu-architecture",
impl: "https://gcc.gnu.org/",
source: "https://gcc.gnu.org/git.html",
},
category: "assembly",
mode: "compiled",
platform: [],
syntax: "assembly",
typing: "weak",
paradigm: "imperative",
usage: [],
},
main: "main.S",
compile: "arm-linux-gnueabihf-gcc main.S -o main -static",
run: "qemu-arm-static main",
@ -127,6 +253,23 @@ message:
asciidoc: {
aliases: ["adoc", "asc"],
name: "AsciiDoc",
info: {
year: 2002,
desc: "Human-readable document format, semantically equivalent to DocBook XML, but using plain-text mark-up conventions",
ext: "adoc",
web: {
wiki: "https://en.wikipedia.org/wiki/AsciiDoc",
home: "https://asciidoc.org/",
source: "https://github.com/asciidoc/asciidoc",
},
category: "markup",
mode: [],
platform: [],
syntax: "text",
typing: [],
paradigm: [],
usage: [],
},
main: "main.adoc",
compile: "asciidoc -s main.adoc",
run: "prettier --no-config main.html",
@ -134,8 +277,26 @@ message:
`,
},
ats: {
aliases: ["dats"],
aliases: ["dats", "sats", "cats", "hats"],
name: "ATS",
info: {
impl: "ATS2/Postiats",
year: 2007,
desc: "Programming language designed to unify programming with formal specification",
ext: ["sats", "dats", "cats", "hats"],
web: {
wiki: "https://en.wikipedia.org/wiki/ATS_(programming_language)",
home: "http://www.ats-lang.org/",
source: "https://github.com/githwxi/ATS-Postiats",
},
category: "general",
mode: "compiled",
platform: [],
syntax: ["c", "haskell"],
typing: ["static", "theorem"],
paradigm: ["imperative", "declarative"],
usage: [],
},
monacoLang: "postiats",
main: "main.dats",
compile: "patscc main.dats -o main",
@ -145,8 +306,26 @@ implement main0 () = ()
`,
},
awk: {
aliases: ["gawk", "mawk"],
aliases: ["gawk", "mawk", "nawk"],
name: "Awk",
info: {
impl: "GNU Awk",
year: 1977,
desc: "Domain-specific language designed for text processing and typically used as a data extraction and reporting tool",
ext: "awk",
web: {
wiki: "https://en.wikipedia.org/wiki/AWK",
impl: "https://www.gnu.org/software/gawk/manual/gawk.html",
source: "https://savannah.gnu.org/git/?group=gawk",
},
category: "tool",
mode: "interpreted",
platform: [],
syntax: "c",
typing: "weak",
paradigm: "imperative",
usage: [],
},
main: "main.awk",
run: `awk -f main.awk`,
template: `BEGIN { print "Hello, world!" }
@ -155,6 +334,24 @@ implement main0 () = ()
bash: {
aliases: ["bashrc", "bourneshell"],
name: "Bash",
info: {
impl: "GNU Bash",
year: 1989,
desc: "Unix shell and command language written by Brian Fox for the GNU Project as a free software replacement for the Bourne shell",
ext: ["bash", "sh"],
web: {
wiki: "https://en.wikipedia.org/wiki/Bash_(Unix_shell)",
impl: "https://www.gnu.org/software/bash/",
source: "https://savannah.gnu.org/projects/bash/",
},
category: "shell",
mode: "interpreted",
platform: [],
syntax: "pascal",
typing: "weak",
paradigm: "imperative",
usage: [],
},
monacoLang: "shell",
repl: "bash --rcfile /dev/null",
input: `expr 123 \\* 234`,
@ -172,6 +369,24 @@ implement main0 () = ()
basic: {
aliases: ["bas", "qbasic"],
name: "BASIC",
info: {
impl: "Bywater BASIC",
year: 1964,
desc: "General-purpose, high-level programming language whose design philosophy emphasizes ease of use",
ext: "bas",
web: {
wiki: "https://en.wikipedia.org/wiki/BASIC",
impl: "https://sourceforge.net/projects/bwbasic/",
source: "https://sourceforge.net/projects/bwbasic/files/bwbasic/",
},
category: "general",
mode: "interpreted",
platform: [],
syntax: ["basic", "column", "whitespace"],
typing: "static",
paradigm: "imperative",
usage: [],
},
repl: "bwbasic",
input: "PRINT 123 * 234",
main: "main.bas",
@ -186,6 +401,21 @@ implement main0 () = ()
battlestar: {
aliases: ["battlestarc", "bts"],
name: "Battlestar",
info: {
year: 2014,
desc: "A different take on assembly, with the goal of creating tiny executables",
ext: "bts",
web: {
source: "https://github.com/xyproto/battlestar",
},
category: "assembly",
mode: "compiled",
platform: [],
syntax: "assembly",
typing: "weak",
paradigm: "imperative",
usage: "personal",
},
main: "main.bts",
run: "bts main.bts",
template: `const message = "Hello, world!\n"
@ -197,6 +427,25 @@ end
},
beatnik: {
name: "Beatnik",
info: {
impl: "Cat's Eye Beatnik",
year: 2001,
desc: "Stack-based esoteric programming language created by Cliff L. Biffle",
ext: "beatnik",
web: {
wiki: "https://en.wikipedia.org/wiki/Beatnik_(programming_language)",
esolang: "https://esolangs.org/wiki/Beatnik",
home: "https://cliffle.com/esoterica/beatnik/",
source: "https://github.com/catseye/Beatnik",
},
category: "esoteric",
mode: "interpreted",
platform: [],
syntax: [],
typing: "integer",
paradigm: "stack",
usage: [],
},
main: "main.beatnik",
run: "beatnik main.beatnik",
template: `Soars, larkspurs, rains.
@ -293,6 +542,26 @@ Nude pagoda careens.
befunge: {
aliases: ["be"],
name: "Befunge",
info: {
impl: "amicloud Befunge-93",
version: "Befunge-93",
year: 1993,
desc: "Two-dimensional esoteric programming language invented in 1993 by Chris Pressey with the goal of being as difficult to compile as possible",
ext: ["be", "bf", "b93", "b98", "befunge"],
web: {
wiki: "https://en.wikipedia.org/wiki/Befunge",
esolang: "https://esolangs.org/wiki/Befunge",
home: "https://catseye.tc/article/Languages.md#befunge-93",
source: "https://github.com/amicloud/befunge93",
},
category: "esoteric",
mode: "interpreted",
platform: [],
syntax: ["golf", "2d"],
typing: "integer",
paradigm: "stack",
usage: [],
},
main: "main.be",
run: "befunge-repl main.be",
template: `64+"!dlrow ,olleH">:#,_@
@ -307,6 +576,25 @@ Nude pagoda careens.
"lambda",
],
name: "Binary Lambda Calculus",
info: {
year: 2004,
desc: "Minimal, pure functional programming language invented by John Tromp in 2004, based on a binary encoding of the untyped lambda calculus in De Bruijn index notation",
ext: "blc",
web: {
wiki: "https://en.wikipedia.org/wiki/Binary_combinatory_logic",
esolang: "https://esolangs.org/wiki/Binary_lambda_calculus",
home: "https://tromp.github.io/cl/Binary_lambda_calculus.html",
impl: "https://www.ioccc.org/2012/tromp/hint.html",
source: "https://www.ioccc.org/2012/tromp/tromp.c",
},
category: "esoteric",
mode: "interpreted",
platform: [],
syntax: [],
typing: "lambda",
paradigm: "functional",
usage: [],
},
main: "main.blc",
run: "cat main.blc | binary-to-text | tromp",
template: `001010100100100001100101011011000110110001101111001011000010
@ -316,6 +604,23 @@ Nude pagoda careens.
boo: {
aliases: ["booc"],
name: "Boo",
info: {
year: 2003,
desc: "Object-oriented, statically typed, general-purpose programming language on Microsoft's Common Language Infrastructure",
ext: "boo",
web: {
wiki: "https://en.wikipedia.org/wiki/Boo_(programming_language)",
home: "https://boo-language.github.io/",
source: "https://github.com/boo-lang/boo",
},
category: "general",
mode: "compiled",
platform: "clr",
syntax: ["python", "extensible", "whitespace"],
typing: ["static", "dynamic"],
paradigm: ["imperative", "oo"],
usage: [],
},
setup: `mkdir -p "$HOME/.local/share" && touch "$HOME/.local/share/booish_history"`,
main: "main.boo",
repl: "booish",
@ -327,6 +632,25 @@ Nude pagoda careens.
brainf: {
aliases: ["brainfuck", "bf"],
name: "Brainf***",
info: {
impl: "Beef",
year: 1993,
desc: "Famous esoteric programming language created in 1993 by Urban Müller",
ext: ["b", "bf"],
web: {
wiki: "https://en.wikipedia.org/wiki/Brainfuck",
esolang: "https://esolangs.org/wiki/Brainfuck",
impl: "https://kiyuko.org/software/beef",
source: "https://github.com/andreabolognani/beef",
},
category: "esoteric",
mode: "interpreted",
platform: "bf",
syntax: "golf",
typing: "integer",
paradigm: "turing",
usage: [],
},
repl: "brainf-repl",
input:
">++>+[>++++[-<++++>]<<]> [>>+>+<<<-]>>>[<<<+>>>-]<<+>[<->[>++++++++++<[->-[>+>>]>[+[-<+>]>+>>]<<<<<]>[-]++++++++[<++++++>-]>[<<+>>-]>[<<+>>-]<<]>]<[->>++++++++[<++++++>-]]<[.[-]<]<",
@ -367,9 +691,28 @@ Nude pagoda careens.
c: {
aliases: ["gcc", "clang", "h", "cc", "c99", "c11", "c18"],
name: "C",
info: {
impl: "LLVM",
version: "C18",
year: 1972,
desc: "General-purpose, procedural computer programming language supporting structured programming, lexical variable scope, and recursion, with a static type system",
ext: ["c", "h"],
web: {
wiki: "https://en.wikipedia.org/wiki/C_(programming_language)",
impl: "https://llvm.org/",
source: "https://github.com/llvm/llvm-project",
},
category: "general",
mode: "compiled",
platform: [],
syntax: "c",
typing: "static",
paradigm: "imperative",
usage: "popular",
},
monacoLang: "c",
main: "main.c",
compile: "clang -Wall -Wextra main.c -o main",
compile: "clang -std=c17 -pedantic -Wall -Wextra main.c -o main",
run: "./main",
format: {
run: "clang-format --assume-filename=format.c",
@ -417,9 +760,28 @@ int main() {
"hxx",
],
name: "C++",
info: {
impl: "LLVM",
version: "C++20",
year: 1985,
desc: "General-purpose programming language created by Bjarne Stroustrup as an extension of the C programming language",
ext: ["C", "cc", "cpp", "cxx", "c++", "h", "hh", "hpp", "hxx", "h++"],
web: {
wiki: "https://en.wikipedia.org/wiki/C%2B%2B",
impl: "https://llvm.org/",
source: "https://github.com/llvm/llvm-project",
},
category: "general",
mode: "compiled",
platform: [],
syntax: "c",
typing: "static",
paradigm: ["functional", "imperative", "oo"],
usage: "popular",
},
monacoLang: "cpp",
main: "main.cpp",
compile: "clang++ -Wall -Wextra main.cpp -o main",
compile: "clang++ -std=c++17 -pedantic -Wall -Wextra main.cpp -o main",
run: "./main",
format: {
run: "clang-format --assume-filename=format.cpp",
@ -448,6 +810,21 @@ int main() {
cat: {
aliases: ["cat-language"],
name: "Cat",
info: {
year: 2006,
desc: "Statically typed stack-based programming language in C#",
ext: "cat",
web: {
source: "https://github.com/cdiggins/cat-language",
},
category: "pure",
mode: "interpreted",
platform: [],
syntax: "tokens",
typing: "static",
paradigm: "stack",
usage: [],
},
repl: "NODE_PATH=/opt/cat node /opt/cat/repl.js",
input: "123 234 mul",
main: "main.cat",
@ -458,6 +835,23 @@ int main() {
},
ceylon: {
name: "Ceylon",
info: {
year: 2011,
desc: "Object-oriented, strongly statically typed programming language with an emphasis on immutability, created by Red Hat",
ext: "ceylon",
web: {
wiki: "https://en.wikipedia.org/wiki/Ceylon_(programming_language)",
home: "https://ceylon-lang.org/",
source: "https://ceylon-lang.org/code/source/",
},
category: "general",
mode: "compiled",
platform: "jvm",
syntax: "c",
typing: "static",
paradigm: ["imperative", "oo"],
usage: [],
},
main: "source/main.ceylon",
run: `PATH="/usr/lib/jvm/java-8-openjdk-amd64/bin:$PATH" ceylon run --compile=force default`,
template: `shared void run() {
@ -468,6 +862,24 @@ int main() {
},
chef: {
name: "Chef",
info: {
impl: "Acme::Chef",
year: 2002,
desc: "Stack-based language where programs look like cooking recipes",
ext: "chef",
web: {
esolang: "https://esolangs.org/wiki/Chef",
home: "https://www.dangermouse.net/esoteric/chef.html",
source: "http://search.cpan.org/author/SMUELLER/Acme-Chef/",
},
category: "esoteric",
mode: ["compiled", "interpreted"],
platform: [],
syntax: "text",
typing: "integer",
paradigm: "imperative",
usage: [],
},
main: "main.chef",
run: "chef main.chef",
hello: "Hello world!",
@ -531,8 +943,25 @@ Refrigerate for 1 hour.
`,
},
clean: {
aliases: ["icl", "clm"],
aliases: ["icl", "clm", "dcl"],
name: "Clean",
info: {
year: 1987,
desc: "General-purpose purely functional computer programming language",
ext: ["icl", "dcl", "abc"],
web: {
wiki: "https://en.wikipedia.org/wiki/Clean_(programming_language)",
home: "https://clean.cs.ru.nl/Clean",
source: "https://gitlab.science.ru.nl/clean-compiler-and-rts/compiler",
},
category: "general",
mode: "compiled",
platform: [],
syntax: "haskell",
typing: "static",
paradigm: ["declarative", "functional"],
usage: [],
},
main: "main.icl",
compile: "clm main -o main",
run: "./main",
@ -550,6 +979,24 @@ Start world
clojure: {
aliases: ["clj"],
name: "Clojure",
info: {
impl: "Java Clojure",
year: 2007,
desc: "Modern, dynamic, and functional dialect of the Lisp programming language on the Java platform",
ext: ["clj", "cljc", "edn"],
web: {
wiki: "https://en.wikipedia.org/wiki/Clojure",
home: "https://clojure.org/",
source: "https://github.com/clojure/clojure",
},
category: "general",
mode: "interpreted",
platform: "jvm",
syntax: ["lisp", "extensible"],
typing: "dynamic",
paradigm: ["declarative", "functional", "imperative", "oo"],
usage: [],
},
monacoLang: "clojure",
repl: "clojure",
input: "(* 123 234)",
@ -566,6 +1013,23 @@ Start world
clojurescript: {
aliases: ["cljs", "lumo"],
name: "ClojureScript",
info: {
year: 2011,
desc: "Compiler for Clojure that targets JavaScript",
ext: "cljs",
web: {
wiki: "https://en.wikipedia.org/wiki/Clojure#Platforms",
home: "https://clojurescript.org/",
source: "https://github.com/clojure/clojurescript",
},
category: "general",
mode: ["compiled", "interpreted"],
platform: "js",
syntax: ["lisp", "extensible"],
typing: ["dynamic", "weak"],
paradigm: ["declarative", "functional", "imperative", "oo"],
usage: [],
},
monacoLang: "clojure",
repl: "lumo -r",
input: "(* 123 234)",
@ -580,6 +1044,23 @@ Start world
cmd: {
aliases: ["bat", "batch", "wine"],
name: "Cmd",
info: {
year: 1987,
desc: "Obsolete (but still default) command-line interpreter for Microsoft Windows",
ext: "bat",
web: {
wiki: "https://en.wikipedia.org/wiki/Cmd.exe",
home: "https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/windows-commands",
source: null,
},
category: "shell",
mode: "interpreted",
platform: "windows",
syntax: "basic",
typing: "weak",
paradigm: "imperative",
usage: [],
},
monacoLang: "bat",
setup: "shopt -s dotglob; cp -R /opt/cmd/home-template/* ./",
repl: "wine cmd",
@ -595,8 +1076,27 @@ Start world
timeout: 15,
},
cobol: {
aliases: ["cbl", "cobc"],
aliases: ["cbl", "cob", "cobc", "cpy"],
name: "COBOL",
info: {
impl: "GnuCOBOL",
version: "COBOL 2014",
year: 1959,
desc: "Compiled English-like computer programming language designed for business use",
ext: ["cbl", "cob", "cpy"],
web: {
wiki: "https://en.wikipedia.org/wiki/COBOL",
impl: "https://sourceforge.net/projects/gnucobol/",
source: "https://sourceforge.net/p/gnucobol/_list/svn",
},
category: "general",
mode: "compiled",
platform: [],
syntax: "basic",
typing: "weak",
paradigm: ["imperative", "oo"],
usage: "popular",
},
main: "main.cbl",
compile: "cobc -free -x main.cbl -o main",
run: "./main",
@ -608,8 +1108,25 @@ PROCEDURE DIVISION.
`,
},
coffeescript: {
aliases: ["coffee"],
aliases: ["coffee", "litcoffee"],
name: "CoffeeScript",
info: {
year: 2009,
desc: "Compile-to-JavaScript programming language adding syntactic sugar inspired by Ruby, Python and Haskell in an effort to enhance JavaScript's brevity and readability",
ext: ["coffee", "litcoffee"],
web: {
wiki: "https://en.wikipedia.org/wiki/CoffeeScript",
home: "https://coffeescript.org/",
source: "https://github.com/jashkenas/coffeescript",
},
category: "general",
mode: ["interpreted", "compiled"],
platform: "js",
syntax: ["c", "haskell"],
typing: "weak",
paradigm: ["declarative", "functional", "imperative"],
usage: [],
},
monacoLang: "coffee",
repl: "coffee",
main: "main.coffee",
@ -627,6 +1144,25 @@ require("/usr/lib/node_modules/coffeescript/repl").start()
commonlisp: {
aliases: ["lisp", "sbcl"],
name: "Common Lisp",
info: {
impl: "SBCL",
year: 1984,
desc: "Modern, multi-paradigm, high-performance, compiled, ANSI-standardized, most prominent (along with Scheme) descendant of the Lisp family",
ext: ["lisp", "lsp", "l", "cl", "fasl"],
web: {
wiki: "https://en.wikipedia.org/wiki/Common_Lisp",
home: "https://common-lisp.net/",
impl: "http://www.sbcl.org/",
source: "https://sourceforge.net/p/sbcl/sbcl/ci/master/tree/",
},
category: "general",
mode: ["compiled", "interpreted"],
platform: [],
syntax: ["lisp", "extensible"],
typing: ["static", "dynamic"],
paradigm: ["declarative", "functional", "imperative", "oo"],
usage: [],
},
repl: "rlwrap sbcl",
input: "(* 123 234)",
main: "main.lisp",
@ -640,6 +1176,25 @@ require("/usr/lib/node_modules/coffeescript/repl").start()
confluence: {
aliases: ["jira", "atlassian"],
name: "Confluence",
info: {
impl: "Pandoc",
year: 2004,
desc: "Markup format for a popular web-based corporate wiki developed by Atlassian",
ext: [],
web: {
wiki: "https://en.wikipedia.org/wiki/Confluence_(software)",
home: "https://confluence.atlassian.com/doc/confluence-wiki-markup-251003035.html",
impl: "https://pandoc.org/",
source: "https://github.com/jgm/pandoc",
},
category: "markup",
mode: [],
platform: [],
syntax: "text",
typing: [],
paradigm: [],
usage: [],
},
main: "main.txt",
compile: "pandoc main.txt -f jira -o main.html",
run: "prettier --no-config main.html",
@ -649,6 +1204,23 @@ require("/usr/lib/node_modules/coffeescript/repl").start()
crystal: {
aliases: ["cr"],
name: "Crystal",
info: {
year: 2014,
desc: "General-purpose, object-oriented programming language with syntax inspired by the language Ruby",
ext: "cr",
web: {
wiki: "https://en.wikipedia.org/wiki/Crystal_(programming_language)",
home: "https://crystal-lang.org/",
source: "https://github.com/crystal-lang/crystal",
},
category: "general",
mode: "compiled",
platform: [],
syntax: "pascal",
typing: "static",
paradigm: "oo",
usage: [],
},
main: "main.cr",
run: "crystal main.cr",
template: `puts "Hello, world!"
@ -658,6 +1230,7 @@ require("/usr/lib/node_modules/coffeescript/repl").start()
csharp: {
aliases: ["cs", "mcs"],
name: "C#",
// popular
monacoLang: "csharp",
main: "main.cs",
compile: "mcs main.cs",
@ -705,6 +1278,7 @@ void main()
},
dart: {
name: "Dart",
// popular
monacoLang: "dart",
main: "main.dart",
run: "dart main.dart",
@ -991,6 +1565,7 @@ USE: io
go: {
aliases: ["golang"],
name: "Go",
// popular
monacoLang: "go",
main: "main.go",
compile: "go build main.go",
@ -1027,6 +1602,7 @@ func main() {
},
groovy: {
name: "Groovy",
// popular
repl: `JAVA_OPTS="-Djava.util.prefs.systemRoot=$PWD/.java -Djava.util.prefs.userRoot=$PWD/.java/.userPrefs" groovysh`,
main: "main.groovy",
run: `JAVA_OPTS="-Djava.util.prefs.systemRoot=$PWD/.java -Djava.util.prefs.userRoot=$PWD/.java/.userPrefs" groovysh main.groovy`,
@ -1061,6 +1637,7 @@ function main(): void {
haskell: {
aliases: ["ghc", "ghci", "hs"],
name: "Haskell",
// popular
repl: "rm -f .ghci && ghci",
main: "Main.hs",
run: "(echo ':load Main' && echo 'main') > .ghci && ghci",
@ -1198,6 +1775,7 @@ PLEASE GIVE UP
java: {
aliases: ["javac"],
name: "Java",
// popular
monacoLang: "java",
main: "Main.java",
compile: "javac Main.java",
@ -1362,6 +1940,7 @@ PLEASE GIVE UP
javascript: {
aliases: ["node", "js", "web", "jsx", "v8", "closure", "nodejs"],
name: "Node.js",
// popular
monacoLang: "javascript",
repl: "node",
main: "main.js",
@ -1386,6 +1965,7 @@ PLEASE GIVE UP
julia: {
aliases: ["jl"],
name: "Julia",
// popular
repl: "julia",
main: "main.jl",
run: "julia -L main.jl",
@ -1425,6 +2005,7 @@ PLEASE GIVE UP
kotlin: {
aliases: ["kts", "kotlinc"],
name: "Kotlin",
// popular
monacoLang: "kotlin",
repl: `JAVA_OPTS="-Duser.home=$PWD" kotlinc`,
main: "main.kts",
@ -1506,6 +2087,7 @@ KTHXBYE
},
lua: {
name: "Lua",
// popular
monacoLang: "lua",
repl: "lua",
main: "main.lua",
@ -1645,6 +2227,7 @@ message:
objectivec: {
aliases: ["objc", "gnustep"],
name: "Objective-C",
// popular
monacoLang: "objective-c",
main: "main.m",
compile:
@ -1702,6 +2285,7 @@ print_string "Hello, world!\\n"
octave: {
aliases: ["matlab", "m", "mathworks"],
name: "Octave",
// popular
repl: "octave",
main: "main.m",
run: "octave --persist main.m",
@ -1768,6 +2352,7 @@ end.
perl: {
aliases: ["pl", "repl"],
name: "Perl",
// popular
monacoLang: "perl",
repl: "re.pl",
main: "main.pl",
@ -1787,6 +2372,7 @@ end.
php: {
aliases: ["phpcli"],
name: "PHP",
// popular
monacoLang: "php",
repl: "php -a",
input: "print 123 * 234;",
@ -1914,6 +2500,25 @@ main = do
python: {
aliases: ["python3", "python2", "py"],
name: "Python",
info: {
impl: "CPython",
version: "Python 3",
year: 1990,
desc: "Interpreted, high-level, general-purpose programming language",
ext: ["py", "pyi", "pyc", "pyd", "pyo", "pyw", "pyz"],
web: {
wiki: "https://en.wikipedia.org/wiki/Python_(programming_language)",
source: "https://github.com/python/cpython",
home: "https://www.python.org/",
},
category: "general",
mode: "interpreted",
platform: "python",
syntax: ["python", "whitespace"],
typing: "dynamic",
paradigm: ["functional", "imperative", "oo"],
usage: "popular",
},
monacoLang: "python",
repl: "python3 -u",
main: "main.py",
@ -1965,6 +2570,7 @@ main = do
r: {
aliases: ["rlang"],
name: "R",
// popular
monacoLang: "r",
repl: "R",
main: ".Rprofile",
@ -2091,6 +2697,7 @@ Hello, world!
ruby: {
aliases: ["irb", "rb"],
name: "Ruby",
// popular
monacoLang: "ruby",
repl: "irb",
main: "main.rb",
@ -2123,6 +2730,7 @@ binding_irb.run(IRB.conf)
rust: {
aliases: ["rs", "rustc"],
name: "Rust",
// popular
monacoLang: "rust",
main: "main.rs",
compile: "rustc main.rs",
@ -2144,6 +2752,7 @@ binding_irb.run(IRB.conf)
},
scala: {
name: "Scala",
// popular
repl: "scala",
main: "main.scala",
run: "scala -i main.scala",
@ -2376,6 +2985,7 @@ END
swift: {
aliases: ["swiftc"],
name: "Swift",
// popular
monacoLang: "swift",
main: "main.swift",
compile: "swiftc main.swift",
@ -2484,6 +3094,7 @@ a
typescript: {
aliases: ["ts", "tsnode", "tsc"],
name: "TypeScript",
// popular
monacoLang: "typescript",
repl: "ts-node",
main: "main.ts",
@ -2561,8 +3172,9 @@ main = 'let
`,
},
visualbasic: {
aliases: ["vbasic", "vb", "vbnc"],
aliases: ["vbasic", "vb", "vbnc", "vba"],
name: "Visual Basic",
// popular
monacoLang: "vb",
main: "main.vb",
compile: "vbnc main.vb",