An open API service indexing awesome lists of open source software.

https://github.com/atilmohamine/izem

Izem is a blazing fast JavaScript and TypeScript runtime built with Nim 2 and JavaScriptCore
https://github.com/atilmohamine/izem

javascript javascript-runtime javascriptcore nim nodejs

Last synced: 9 days ago
JSON representation

Izem is a blazing fast JavaScript and TypeScript runtime built with Nim 2 and JavaScriptCore

Awesome Lists containing this project

README

          




Izem

**Izem** is a **blazing fast** JavaScript and TypeScript runtime built with Nim 2 and JavaScriptCore. It is designed for exceptional performance and efficiency, capable of handling up to **100,000 requests per second**.

## Benchmark

The benchmark tests were run on a system with the following specifications:
- **Operating System**: Linux (Ubuntu)
- **Processor**: Intel(R) Core(TM) i3-4150 CPU @ 3.50GHz
- **Memory**: 8GB RAM

Below is the benchmark bar chart showing the performance of the system during the tests:



## Getting Started

### Installation:

Clone the repository, install the required dependencies, and build the runtime:

```bash
git clone https://github.com/atilmohamine/izem.git
cd izem
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.0-dev # Required for JavaScriptCore
make deps
make
```

### Usage:

Once built, you can run JavaScript files using:

```bash
./izem yourfile.js
```

## Starting a Server

You can start a simple server using the `izem.serve` method. Below is an example of how to initialize the server:

```js
izem.serve(4006, (req) => {
return "Welcome to the Izem Server";
});
```

## WinterCG Compliance and Available APIs

**Izem** is designed to adhere to the [WinterCG](https://wintercg.org/) standards, ensuring compatibility with modern web platform capabilities and a consistent developer experience.

### Currently Available APIs

The following APIs are currently implemented in **Izem**:

- `console`
- `setTimeout() / clearTimeout()`
- `setInterval() / clearInterval()`
- `URL`
- `URLSearchParams`
- `WritableStream`
- `WritableStreamDefaultWriter`