201211Okt

LLJS: Speicherverwaltung mit Low-Level-JavaScript

Mit ECMAScript 5.1 und auch mit der kommenden Harmony-Version stehen in JavaScript viele neue Funktionen und Konzepte bereit, welche die Sprache noch dynamischer machen, als sie ohnehin schon ist. Entwickler, die aus dem Low-Level-Bereich kommen und mit C oder C++ gearbeitet haben, könnten bezüglich der manuellen Speicherverwaltung Interesse an dem Projekt LLJS (Low-Level JavaScript) haben: Dabei handelt es sich um einen Compiler, der C und JavaScript vereint und interessante Features wie Pointer, Structs oder Typisierung bietet. Der LLJS-Compiler kann per Node.js, in einer JavaScript-Shell (Spidermonkey) oder im Browser verwendet werden.

LLJS - Low-Level JavaScript

Der Memory Allocator in LLJS ist eine Ableitung der K&R-Implementierung in C und verwendet die Funktionen malloc und free zur Verwaltung der Heap- und Stack-Pointer. Die eigentliche Speicherverwaltung wird durch typisierte Arrays erreicht, wobei Pointer als Integer-Adressen abgelegt werden. Ein kurzes Beispiel von LLJS-Code, der Pointer und typisierte Funktionen demonstriert:

  • function u16 *memcpy2(u16 *dst, u16 *src, uint length) {
  • for (let int i = 0; i < length; ++i) {
  • *dst++ = *src++;
  • }
  • return dst;
  • }

Das LLJS-Projekt steht bei GitHub zur Verfügung und stellt derzeit einen Prototypen dar. Dennoch ist der Ansatz interessant, wenn es um effiziente Speichernutzung geht.