GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - NerdLang/nerd: 🔱 Javascript's God Mode. No VM. No Bytecode. No GC. Just native binaries.

BranchesTags
Open more actions menu

Latest commit

 

History

989 Commits
989 Commits

Folders and files

NameName
Last commit message
Last commit date
base
base
 
 
compiler
compiler
 
 
example
example
 
 
external
external
 
 
lib
lib
 
 
nerd_modules
nerd_modules
 
 
self
self
 
 
test
test
 
 
.gitignore
.gitignore
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
nerd.js
nerd.js
 
 
package.json
package.json
 
 

Repository files navigation

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

NectarJS becomes Nerd

Compile JavaScript and NerdLang in native binaries.

What is NerdLang

NerdLang is a substract of JS with some additions, focus on efficiency.

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

Nerd is in active development, join us on Discord if you need more information.

  • Roadmap on Trello

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 GCC/CLang for your platform

  • Windows Install Mingw and Clang for Windows here: http://winlibs.com/ or Clang here: https://releases.llvm.org/

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

You need MinGW with POSIX threads

  • Linux / FreeBSD Install 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 iOS Install xCode and you are ready.

You can check your installation with npm start njs_test

Usage

Simplest way to use Nerd:

nerd file.js / file.ng

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

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

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

nerd file.js --run

You can enable the quiet mode with --quiet:

nerd file.js --quiet

Changing the stack size (useful on Windows):

nerd --stack 10000000 flood.js

For more informations about compilation output, use --verbose

For help, use --help

Benchmarks

  • Need update

Compiled with GCC v10.2.0 on Windows

NodeJS v12.8.1 QuickJS 2020-07-05 Nerd 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.

ECMAScript Support

Nerd 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.

nectarjs.com

Topics

arduinocompilationjsnodejsraspberrywasm

Resources

Readme
MIT license
Activity
Custom properties

Stars

3.6k stars

Watchers

82 watching

Forks

124 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.