• Stars
    star
    215
  • Rank 183,925 (Top 4 %)
  • Language Pascal
  • License
    GNU Lesser Genera...
  • Created about 10 years ago
  • Updated about 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Complete ECMAScript Fifth Edition Implemention in Object Pascal

BESEN is an acronym for "B ero's E cma S cript E ngine", and it is a complete ECMAScript Fifth Edition Implemention in Object Pascal, which is compilable with Delphi >=7 and Free Pascal >= 2.5.1 (maybe also 2.4.1).

BESEN is licensed under the LGPL v2.1 with static-linking-exception.

Support me

Support me at Patreon

Features

  • Complete implementation of the ECMAScript Fifth Edition standard
  • Own bytecode-based ECMA262-complaint Regular Expression Engine
  • Incremental praise/exact mark-and-sweep garbage collector
  • Unicode UTF8/UCS2/UTF16/UCS4/UTF32 support (on ECMAScript level, UCS2/UTF16)
  • Compatibility modes, for example also a facile Javascript compatibility mode
  • Bytecode compiler
  • Call-Subroutine-Threaded Register-based virtual machine
  • Context-Threaded 32-bit x86 and 64-bit x64/AMD64 Just-in-Time Compiler (a ARMv7 EABI JIT for ARM CPUs with VFPv3 instruction set is planned)
  • Constant folding
  • Dead code elimination
  • Abstract-Syntax-Tree based optimizations
  • Type inference (both exact and speculative)
  • Polymorphic Inline Cache based on object structure and property key IDs
  • Perfomance optimized hash maps
  • Self balanced trees (for example to sort on-the-fly linked list items of hash maps for very fast enumeration of array objects)
  • Easy native Object Pascal class integration (properties per RTTI and published methods per by-hand-parsing of the native virtual method table)

Hint

  • Function code runs faster than global non-function code, because function-local variable accesses will be always identifier index lookups instead of identifier string lookups.
  • Strict code runs faster than non-strict code, for that reason please use preferably "use strict" where is it possible, because at strict code is the arguments object creation cheaper at funtion calls, for example no setter/getter creation for each function argument in the arguments object.
  • Scoping and some other things between ECMAScript 3rd Edition and ECMAScript 5th Edition are a bit different, so the execution perfomance of ES3 code in a ES5-complaint engine can be strong faster or even strong slower, depends on the individual situation/code.
  • No all old ES3 code must be runnable in a ES5-complaint engine, but the most old ES3 code should be runnable, I think.

Flattr

[Flattr](http://flattr.com/thing/74902/BESEN-ECMAScript-5th-Edition-Engine Flattr)

Donate

Go to my donate page

IRC channel

IRC channel #besen on Freenode

Contact

Drop me a mail at benjamin at rosseaux dot com for bug reports, questions, feature suggestions or whatever. :-)

More Repositories

1

pasvulkan

Vulkan header generator, OOP-style API wrapper, framework and prospective Vulkan-based game engine for Object Pascal
Pascal
191
star
2

pasmp

PasMP - a parallel-processing/multi-processing library for Object Pascal
Pascal
112
star
3

kraft

Kraft Physics Engine is an open source Object Pascal physics engine library that can be used in 3D games.
Pascal
110
star
4

flre

FLRE - Fast Light Regular Expressions - A fast light regular expression library
Pascal
94
star
5

rnl

RNL - Realtime Network Library - The opensource reliable UDP network library
Pascal
84
star
6

pacc

PACC (PAscal C Compiler) is an C compiler, which is implemented in Delphi-7-compatible Object Pascal
Pascal
64
star
7

berotinypascal

A self-hosting capable tiny pascal compiler for the Win32 x86 platform
Pascal
55
star
8

crosspascal

CrossPascal aims to be a Delphi 7 compatible cross-platform source-to-source compiler which generates intermediate C code.
Pascal
43
star
9

pasgltf

An Object-Pascal-native GLTF 2.0 low-level-data loader and writer for GLTF and GLB files
Pascal
33
star
10

pasjson

A unified JSON library for both Object-Pascal ecosystems (Delphi and FreePascal)
Pascal
31
star
11

sasm

SASM - Scriptable ASseMbler - A x86 assembler with ECMAScript as (additional) macro language as an optional compile-in-option
Pascal
27
star
12

pashtmldown

PasHTMLDown MarkDown Libary
Pascal
25
star
13

br808

BR808 is a originally demoscene-originated software synthesizer, which became a bit too big for 64k intros.
Pascal
20
star
14

pucu

PUCU Pascal UniCode Utils Libary
Pascal
17
star
15

poca

Yet another scripting language
Pascal
16
star
16

pasenet

Pascal port of ENet with IPv6 support
Pascal
16
star
17

brre

yet another efficient, principled regular expression library
Pascal
15
star
18

micro64disktool

A c64 diskette image converter tool
Pascal
12
star
19

pasdblstrutils

Pascal library for cross-compiler consistent and exact conversion between double-precision floating point number values and strings
Pascal
10
star
20

pasmultilang

An cross-compiler Object Pascal unit for internationalization and localization
Pascal
10
star
21

tine

TINE (This is not EFI) - A fake-(U)EFI boot loader for pure BIOS environments
Assembly
5
star
22

pasvulkan_old

PasVulkan with the full old too big history
Pascal
3
star