fbpx
Wikipedia

Extensible Embeddable Language

The Extensible Embeddable Language (EEL) is a scripting and programming language in development by David Olofson. EEL is intended for scripting in realtime systems with cycle rates in the kHz range, such as musical synthesizers and industrial control systems, but also aspires to be usable as a platform independent general purpose programming language.

EEL
ParadigmMulti-paradigm: scripting, imperative, functional, object-oriented
Designed byDavid Olofson
First appeared2005; 19 years ago (2005)
Stable release
0.3.6 / February 4, 2014; 10 years ago (2014-02-04)
Typing disciplineDynamic
OSCross-platform
LicenseGNU Lesser General Public License
Filename extensionseel
Websiteeel.olofson.net
Influenced by
Lua, C, Pascal

Philosophy edit

As to the language design, the general idea is to strike a practical balance between power, ease of use and safety. The intention is to help avoiding many typical programming mistakes without resorting to overly wordy syntax or restricted functionality.

History edit

The first incarnation of EEL was in the form of a simple parser for structured audio definitions, used in the sound engine of the Free and Open Source game Kobo Deluxe, an SDL port of the X11 game XKobo. This was a simple interpreter with very limited flow control, and a syntax that's quite different from that of current versions. This initial branch of EEL was first released in 2002, and is still used in Kobo Deluxe as of version 0.5.1.

In December 2003, EEL was split off into a stand-alone project and subject to a major rewrite, in order to be used for real time scripting in an embedded rheology application. This is where the switch from interpreter to compiler/VM was made, and the actual programming language EEL materialized. The first official release was in January 2005. Since then, EEL has evolved slowly, driven mostly by the personal and professional needs of its author.

Features edit

General edit

The language is not strictly designed for any particular programming paradigm, but supports object oriented programming, or more specifically, prototype-based programming, through a minimal set of syntax sugar features. Other styles and paradigms of programming, such as functional, modular and metaprogramming are also supported.

As a result of avoiding pointers and providing fully managed structured data types, EEL is "safe" in the sense that EEL programs should not be able to crash the virtual machine or the host application.

Highlights edit

Example code edit

The classic hello world program can be written as follows:

export function main<args> { print("Hello, world!\n"); return 0; } 

The following is an example of a recursive function:

export function main<args> { print("Recursion test 1:\n"); procedure recurse(arg) { print("arg = ", arg, "\n"); if arg  recurse(arg - 1); } recurse(10); print("Recursion test 2; Mutual Recursion:\n"); procedure mrecurse2(arg); procedure mrecurse1(arg) { print("arg = ", arg, "\n"); if arg  mrecurse2(arg); } procedure mrecurse2(arg) { mrecurse1(arg - 1); }; mrecurse1(10); print("Recursion test 2; Mutual Recursion with Function Reference:\n"); procedure mrrecurse1(arg, fn) { print("arg = ", arg, "\n"); if arg  fn(arg, fn); } local mrr2 = procedure (arg, fn) { mrrecurse1(arg - 1, fn); }; mrrecurse1(10, mrr2); print(Recursion tests done.\n); return 0; } 

Internals edit

EEL source code is compiled into bytecode for a custom VM, which has a relatively high level instruction set designed to minimize instruction count and thus overhead. The EEL VM is register based and "stackless", as in not relying on the C call stack for managing VM contexts.

The basic memory management method is reference counting, which allows automatic memory management with deterministic timing, without the need for concurrent garbage collection.

The VM uses "limbo lists" to keep track of intermediate objects created inside expressions and the like, which greatly simplifies exception handling, and eliminates the need for active reference counting in every single operation.

Applications edit

Kobo Deluxe edit

Kobo Deluxe is an application of EEL.[1]

References edit

  1. ^ Best of 2013: 31 Years On - Independent Gaming on the Commodore 64 by James Monkman on indiegames.com (December 20, 2013)

External links edit

  • EEL homesite
  • Kobo Deluxe homesite

extensible, embeddable, language, scripting, programming, language, development, david, olofson, intended, scripting, realtime, systems, with, cycle, rates, range, such, musical, synthesizers, industrial, control, systems, also, aspires, usable, platform, inde. The Extensible Embeddable Language EEL is a scripting and programming language in development by David Olofson EEL is intended for scripting in realtime systems with cycle rates in the kHz range such as musical synthesizers and industrial control systems but also aspires to be usable as a platform independent general purpose programming language EELParadigmMulti paradigm scripting imperative functional object orientedDesigned byDavid OlofsonFirst appeared2005 19 years ago 2005 Stable release0 3 6 February 4 2014 10 years ago 2014 02 04 Typing disciplineDynamicOSCross platformLicenseGNU Lesser General Public LicenseFilename extensionseelWebsiteeel wbr olofson wbr netInfluenced byLua C Pascal Contents 1 Philosophy 2 History 3 Features 3 1 General 3 2 Highlights 4 Example code 5 Internals 6 Applications 6 1 Kobo Deluxe 7 References 8 External linksPhilosophy editAs to the language design the general idea is to strike a practical balance between power ease of use and safety The intention is to help avoiding many typical programming mistakes without resorting to overly wordy syntax or restricted functionality History editThe first incarnation of EEL was in the form of a simple parser for structured audio definitions used in the sound engine of the Free and Open Source game Kobo Deluxe an SDL port of the X11 game XKobo This was a simple interpreter with very limited flow control and a syntax that s quite different from that of current versions This initial branch of EEL was first released in 2002 and is still used in Kobo Deluxe as of version 0 5 1 In December 2003 EEL was split off into a stand alone project and subject to a major rewrite in order to be used for real time scripting in an embedded rheology application This is where the switch from interpreter to compiler VM was made and the actual programming language EEL materialized The first official release was in January 2005 Since then EEL has evolved slowly driven mostly by the personal and professional needs of its author Features editGeneral edit The language is not strictly designed for any particular programming paradigm but supports object oriented programming or more specifically prototype based programming through a minimal set of syntax sugar features Other styles and paradigms of programming such as functional modular and metaprogramming are also supported As a result of avoiding pointers and providing fully managed structured data types EEL is safe in the sense that EEL programs should not be able to crash the virtual machine or the host application Highlights edit C like syntax Opaque references as opposed to raw pointers Dynamic typing Automatic memory management Exception handling Built in structured data types such as string immutable string dstring dynamic string vector fixed type numeric array array array of dynamically typed elements table associative array Example code editThe classic hello world program can be written as follows export function main lt args gt print Hello world n return 0 The following is an example of a recursive function export function main lt args gt print Recursion test 1 n procedure recurse arg print arg arg n if arg recurse arg 1 recurse 10 print Recursion test 2 Mutual Recursion n procedure mrecurse2 arg procedure mrecurse1 arg print arg arg n if arg mrecurse2 arg procedure mrecurse2 arg mrecurse1 arg 1 mrecurse1 10 print Recursion test 2 Mutual Recursion with Function Reference n procedure mrrecurse1 arg fn print arg arg n if arg fn arg fn local mrr2 procedure arg fn mrrecurse1 arg 1 fn mrrecurse1 10 mrr2 print Recursion tests done n return 0 Internals editEEL source code is compiled into bytecode for a custom VM which has a relatively high level instruction set designed to minimize instruction count and thus overhead The EEL VM is register based and stackless as in not relying on the C call stack for managing VM contexts The basic memory management method is reference counting which allows automatic memory management with deterministic timing without the need for concurrent garbage collection The VM uses limbo lists to keep track of intermediate objects created inside expressions and the like which greatly simplifies exception handling and eliminates the need for active reference counting in every single operation Applications editKobo Deluxe edit Kobo Deluxe is an application of EEL 1 References edit Best of 2013 31 Years On Independent Gaming on the Commodore 64 by James Monkman on indiegames com December 20 2013 External links editEEL homesite Kobo Deluxe homesite Retrieved from https en wikipedia org w index php title Extensible Embeddable Language amp oldid 1140003025, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.