Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

🔱 Javascript's God Mode. No VM. No Bytecode. No GC. Just native binaries.

License

NotificationsYou must be signed in to change notification settings

NerdLang/nerd

Repository files navigation

Tweet


Javascript's God Mode: one language to rule them all.

Code everything, everywhere, for everything, in JavaScript.

No VM. No Bytecode. No packaging. No Garbage Collector. Fully compiled to native binaries.

Table of contents

About NectarJS

NectarJS is aJavaScript native compiler aiming to make JavaScript universal, NectarJS is able to compile native apps for Windows, Mac, Linux, iOS, Android, Raspberry, STM32 and more.

NectarJS is in active development, join us onDiscord orIRC if you need more information.

Main objectives

  • Supporting EcmaScript 3 standard (then 5, 6 ...)
  • Supporting NodeJS and NPM ecosystem
  • Supporting a maximum of platforms (Windows, Mac, Linux, Android, Arduino, ...)
  • Being secure
  • Embeding debuging tools
  • Compile everything that can be transpiled in JS: Ruby (Opal), Python (Transcript, Brython, JavaScrypthon), TypeScript ...

Get started

Installation

Install NectarJS from NPM

npm install -g nectarjs

Install GCC/CLang for your platform

You can also install Linux for Windows and use a linux system on Windows

You need MinGW with POSIX threads

  • Linux / FreeBSDInstall it with your distro (apt install gcc, yum install gcc, ...).You can use GCC, CLANG, as well as any derivative of those compilers (arm-gcc ...)

  • Apple iOSInstall xCode and you are ready.

You can check your installation withnpm start njs_test

Usage

Simplest way to use NectarJS:

nectar file.js

The output file name will be automatically chosen regarding the target. You can specify another output with-o something.out

You can select a preset (seeAdvanced usage):

nectar file.js --preset [none|speed|size]

You can also run the compiled executable just after compilation using --run:

nectar file.js --run

You can enable the quiet mode with --quiet:

nectar file.js --quiet

Changing the stack size (usefull on Windows):

nectar --stack 10000000 flood.js

You can install a module with:

nectar -i module_name

You can see the module list and participate in their development here:https://github.com/NectarJS/nectar_modules

You can initialize an empty module with the command:

nectar --init-module module_name --author me

For more informations about compilation output, use--verbose

For help, use--help

Benchmarks

Compiled with GCC v10.2.0 on Windows

NodeJS v12.8.1QuickJS 2020-07-05NectarJS v0.6.104
sort(1e6) [No preset]
- Time:0.33s-0.33s
- Memory:7.0Mb-1.0Mb
- Filesize:28.6Mb-424Kb
sort(1e6) [+Size preset]
- Filesize:28.6Mb-260Kb
sort(1e6) [+Speed preset]
- Time:0.33s-0.20s
matrix(256) [No preset]
- Time:0.33s-0.21s
- Memory:7.0Mb-1.0Mb
- Filesize:28.6Mb-405Kb
matrix(256) [+Size preset]
- Filesize:28.6Mb-251Kb
matrix(1e6) [+Speed preset]
- Time:0.33s-0.11s
  • Some code can be evaluated compile-time

Supported platforms

Actively tested for

  • Windows
    • win-x86-32
    • win-x86-64
  • Linux
    • linux-x86-32
    • linux-x86-64
    • linux-arm32v7
  • Arduino
    • arduino-nano
    • arduino-uno
    • arduino-mega1280
    • arduino-mega2560
  • STM32 Nucleo
    • nucleo-l152re
    • nucleo-l432kc
    • nucleo-f446re
  • Mobile
    • android
  • Web
    • wasm
    • wast
    • asm-js
  • macOS
  • Sun OS

Development

This project is in heavy development and a lot features are not implemented yet.

Stores

NectarJS compiled apps are tested to be publishable on:

  • Apple Store

ECMAScript Support

NectarJS already supports more than 80% of ES3.

Prototype
  • .call()
  • .bind()
Array
  • .length
  • .push(value)
Class
  • constructor
  • methods
  • static methods
Console
  • .log(variadic)
JSON
  • .parse(str)
  • .stringify(obj)
Math **(DONE)**
  • [All static methods and constants]
Object
  • .keys
performance
  • timeOrigin
  • .now()
String
  • .length
  • .toString()
  • .indexOf(needle)
  • .lastIndexOf(needle)
  • .search(needle)
  • .slice(start, end)
  • .substring(start, end)
  • .substr(start, end)
  • .replace(needle, str)
Syntax
  • for
  • while / do while
  • if / else if / else
  • try / catch / finally
  • function / lambda
  • class
  • new
  • typeof
  • instanceof
  • undefined
  • null
  • Infinite
  • NaN / isNaN
  • true / false

About

🔱 Javascript's God Mode. No VM. No Bytecode. No GC. Just native binaries.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors17


[8]ページ先頭

©2009-2025 Movatter.jp