myownnode
myownnode copied to clipboard
Bun? Deno? Node.js? Creating your own JavaScript Runtime using V8, Libuv and more
CapivaraBR - Creating your own JavaScript runtime tutorial

Overview
CapivaraBR is a JavaScript runtime built on top of V8 Javascript Engine and Libuv
- Use the environment to follow the tutorial on a Gitpod snapshot
About
Welcome, this repo is part of my youtube video about Recreating the Node.js project from Scratch using V8, Libuv and C++
First of all, leave your star 🌟 on this repo.
Access our exclusive telegram channel so I'll let you know about all the content I've been producing
Running
- In the GitPod env you can run the hello world example by running the executable ./start.sh script.
Notes
-
It comes with
live reloadenabled forC++andJSfiles usingnodemon -
It comes with a simple
Printfunction, a custom C++ function used as aconsole.logfunction -
The ./start.sh script generates a
binarycalledcapivara.- It works similarly to how
Node.jsworks.- By running
capivara index.jsit will read theJavaScriptcontent from the file and useV8to interpret it ndlibuvto wait for async events.
- By running
- It works similarly to how
-
Project uses
V8 v10.7.0 -
Project uses
Libuv v1.x -
All other dependencies are listed on scripts folder.
Examples
I left some file exmaples on examples folder in case you wanna check out how to create uv timers, uv threads, native cpp threads or the v8 custom print function.
Running the examples
- You can compile and execute examples by simply executing
make example-without-extension
For example executing the v8-print-hello.cpp:
make v8-print-hello
# Hello, World!...
Compiling binaries for other platforms
if you wanna compile binaries it by yourself, I left some scripts in case you wanna compile all binaries by yourself
- Installing libuv
- Installing v8