Potion (programming language)
Paradigm | Functional, stack-oriented, message passing | ||
---|---|---|---|
Designed by | Why the lucky stiff | ||
First appeared | 2007 | ||
v0.1.1061 / Oct 16, 2013 | |||
dynamic | |||
OS | Linux, BSD, Darwin, Windows | ||
License | MIT License | ||
Website |
perl11 | ||
|
potion is a tiny, fast dynamic, stack-oriented computer programming language with a JIT compiler, closures, continuations and exceptions, a Lua-based VM and an Io-based object model built around message passing, a MOP and mixins. It is technically a lexical-only Lisp-1 with two languages: one for code, one for data and it is written in under 10K lines of C.
History
potion was created by _why as last project in 2007 before his disappearance from the internet.[1] He started playing with Lua's internals and reading stuff by Ian Piumarta and Nicolas Cannasse.
After _why's disappearance, a developer named Fogus took over maintenance until 2013.
In 2013 a group calling itself perl11 "(5+6=11)" with Reini Urban as lead developer took over potion development [2] to be used as Virtual Machine for "p2", a planned implementation for Perl5 and Perl6.[3] Both languages, potion and p2 are now developed together by perl11 developers. v0.1 was released on Oct 16th, 2013 on the perl11 github account.
Philosophy
"If you keep it small, fit the VM and the parser and the stdlib all into 10k lines, then it's no sweat." [4]
Examples
Fibonacci sequence:
fib = (n): if (n < 2): n. else: fib (n - 1) + fib (n - 2). . n = argv(1) number if (n<1): n=28. ("fib(",n,")= ", fib(n)) join say # parrot example/fib.pir 40 3m36.447s # perl example/fib.pl 40 2m19.752s # potion example/fib.pn 40 0m3.512s
Features
- pure object-oriented based on prototypes
- callcc/yield based exception handling in unportable assembler
- Perl-like regular expressions (planned)
- compacting inprecise garbage collecting supporting weak links
- DLL/shared library dynamic loading on most platforms
- introspection, reflection and metaprogramming
- Actor-based concurrency
- Coroutines
- fast asynchronous IO
- small virtual machine
- higher-order functions
External links
References
- ↑ Lowrey, Annie (15 March 2012). "Where’s _why? What happened when one of the world’s most unusual, and beloved, computer programmers disappeared". Slate. Retrieved 15 March 2012.
- ↑ fogus (11 August 2013). "_why’s Potion — a new home". Retrieved 21 August 2013.
- ↑ Urban, Reini (4 June 2013). "Design Decisions on p2". Retrieved 15 September 2013.
- ↑ _why (22 December 2008). "README". Retrieved 15 September 2013.