Comparison of open-source programming language licensing
This is a comparison of open-source programming language licensing and related legal issues, covering all language implementations. Open-source programming languages are those that are released under open-source licenses.
Title | Language | Implementation license | Additional information |
GNAT | Ada | GPLv3 | FSF GNAT is GPLv3 with runtime exception, other versions have a GPL runtime. |
ALGOL 68G | ALGOL 68 | GPL | - |
ELLA ALGOL 68 | ALGOL 68 | Public domain or Crown copyright | - |
BWK awk | AWK | Custom | - |
gawk | AWK | GPLv3 | - |
mawk | AWK | GPLv2 | - |
GCC | C, C++, Objective-C, ASM, Go | GPL | - |
Clang, LLVM | C, C++, Objective-C | NCSA | - |
OpenCOBOL | COBOL | GPL | - |
Mono | C#, Visual Basic.NET | GPLv2, MIT, LGPLv2 | - |
' | Eiffel | GPL, EFL | For GPL projects |
' | Eiffel | MIT | - |
Erlang | Erlang | Erlang, Apache 2.0 | - |
Gforth | Forth | GPLv3 | - |
Open Firmware | Forth | BSD | - |
Pforth | Forth | Public domain | - |
FreeBASIC | BASIC | GPL | Inspired by and compatible with QBasic. |
Gambas | BASIC | GPL | Partially compatible with Visual Basic code. |
Harbour | Harbour | GPL | - |
Helium | Haskell | GPL | - |
Icon | Icon | Public domain | - |
IcedTea | Java | GPL | - |
WebKit JavaScriptCore | JavaScript | LGPL v2.1 | - |
SpiderMonkey | JavaScript | MPL | - |
V8 | JavaScript | BSD | - |
Julia | Julia | MIT, GPL and BSD | A few GPL math libraries make the full environment GPL as a whole. |
Emacs Lisp | Lisp | GPLv3 | - |
EGL | EGL | EPL | - |
Lua | Lua | MIT | - |
Logtalk | Logtalk | Apache 2.0 | linking exception |
Free Pascal | Pascal, Object Pascal | GPL, LGPL | GPL applies to the compiler, while LGPL with static linking exception applies to the runtime libraries |
Perl | Perl | Artistic or GPL | - |
PHP | PHP | PHP | - |
Pike | Pike | GPL, LGPL, MPL 1.1 | - |
Free Poplog | POP-11, Common Lisp, Prolog, Standard ML | Custom, based on MIT/XFree86 | - |
GNU Prolog | Prolog | GPLv2 | - |
SWI-Prolog | Prolog | LGPL | - |
Ciao | Prolog | GPL, LGPL | - |
Opa | Opa | Affero GPL | - |
Python | Python | PSF | With Run-Time Exception |
Jython | Python | PSF | With Run-Time Exception |
IronPython | Python | Ms-PL | - |
PyPy | Python | MIT | - |
Regina | REXX | LGPL | - |
Ruby MRI | Ruby | Ruby or GPL | Reference implementation through v1.8 |
YARV | Ruby | Ruby or BSD | Reference implementation for v1.9; GPL for v1.9.1–1.9.2; BSDL for 1.9.3+ |
JRuby | Ruby | CPL, GPL, LGPL | - |
IronRuby | Ruby | Ms-PL | - |
Rubinius | Ruby | BSD | - |
XRuby | Ruby | GPL v2 | - |
Bigloo | Scheme | GPL, LGPL | - |
Chicken | Scheme | BSD | - |
Gambit | Scheme | LGPL, Apache | - |
Guile | Scheme | LGPL | - |
JScheme | Scheme | zlib | - |
BiwaScheme | Scheme | MIT | - |
Kawa | Scheme | MIT | - |
Racket | Scheme | LGPL | - |
Scsh | Scheme | BSD | - |
GNU Smalltalk | Smalltalk | GPL v2 | - |
Pharo | Smalltalk | MIT | - |
Squeak | Smalltalk | Apple Public Source, Apache | - |
CSNOBOL4 | SNOBOL4 | Custom | - |
Tcl/Tk | Tcl/Tk | Tcl/Tk | - |
MINT | TRAC | GPL | - |
ash | Unix Shell | BSD | - |
bash | Unix Shell | GPLv3 | - |
ksh93 | Unix Shell | CPL | - |
Clojure | Clojure | EPL | - |
ClojureCLR | Clojure | EPL | - |
Clojure-Py | Clojure | EPL | - |
ClojureScript | Clojure | EPL | - |
Scala | Scala | BSD | - |
F# | F# | MIT | - |
TypeScript | TypeScript | Apache | - |
Go | Go | BSD-style | - |
Rust | Rust | MIT | - |
Vala | Vala | LGPL | - |
Dart | Dart | BSD | - |
Multics PL/I | PL/I | MIT | - |
R | R | GPL | - |
Swift | Swift | Apache | - |
.NET Core | C#, Visual Basic.NET, F# | MIT | - |
Nim | Nim | MIT | - |
Crystal | Crystal | Apache | - |