{"id":14991412,"url":"https://github.com/erickwendel/myownnode","last_synced_at":"2025-04-09T18:19:44.319Z","repository":{"id":61264168,"uuid":"531098728","full_name":"ErickWendel/myownnode","owner":"ErickWendel","description":" Bun? Deno? Node.js? Creating your own JavaScript Runtime using V8, Libuv and more ","archived":false,"fork":false,"pushed_at":"2023-04-07T23:27:13.000Z","size":27263,"stargazers_count":309,"open_issues_count":0,"forks_count":37,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-04-09T18:19:28.771Z","etag":null,"topics":["bun","deno","diy","js","libuv","tutorial","v8","v8-javascript-engine"],"latest_commit_sha":null,"homepage":"https://youtu.be/ynNDmp7hBdo","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ErickWendel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2022-08-31T13:32:16.000Z","updated_at":"2025-04-05T17:31:03.000Z","dependencies_parsed_at":"2024-01-13T16:53:21.863Z","dependency_job_id":"1d0b803d-32ad-475b-a533-aeec266e6a9b","html_url":"https://github.com/ErickWendel/myownnode","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErickWendel%2Fmyownnode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErickWendel%2Fmyownnode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErickWendel%2Fmyownnode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErickWendel%2Fmyownnode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ErickWendel","download_url":"https://codeload.github.com/ErickWendel/myownnode/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248085325,"owners_count":21045139,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bun","deno","diy","js","libuv","tutorial","v8","v8-javascript-engine"],"created_at":"2024-09-24T14:27:48.061Z","updated_at":"2025-04-09T18:19:44.297Z","avatar_url":"https://github.com/ErickWendel.png","language":"C++","readme":"# CapivaraBR - Creating your own JavaScript runtime tutorial\n![capivara logo](./capivara.jpeg)\n\n## Overview\nCapivaraBR is a JavaScript runtime built on top of [V8 Javascript Engine](https://github.com/v8/v8) and [Libuv](https://github.com/libuv/libuv) \n\n- Use the environment to follow the tutorial on a [Gitpod snapshot](https://gitpod.io#snapshot/448f92e9-efaf-4356-805e-6215c87b76c2)\n\n## About\nWelcome, this repo is part of my youtube video about [Recreating the Node.js project from Scratch using V8, Libuv and C++](https://youtu.be/ynNDmp7hBdo)\n\nFirst of all, leave your star 🌟 on this repo.\n\nAccess our [**exclusive telegram channel**](https://bit.ly/ErickWendelContentHub) so I'll let you know about all the content I've been producing \n\n## Running\n\n- In the GitPod env you can run the hello world example by running the executable [./start.sh](./recorded/capivara/start.sh) script. \n\n### Notes\n\n- It comes with `live reload` enabled for `C++` and `JS` files using `nodemon`\n- It comes with a simple `Print` function, a custom C++ function used as a `console.log` function\n- The [./start.sh](./recorded/capivara/start.sh) script generates a `binary` called `capivara`. \n    - It works similarly to how `Node.js` works. \n        - By running `capivara index.js` it will read the `JavaScript` content from the file and use `V8` to interpret it nd `libuv` to wait for async events.\n\n- Project uses `V8 v10.7.0`\n- Project uses `Libuv v1.x`\n\n- All other dependencies are listed on [scripts](./scripts) folder.\n\n## Examples\n\nI left some file exmaples on [examples](./recorded/capivara/examples/) folder in case you wanna check out how to create [uv timers](./recorded/capivara/examples/uv-timers.cpp), [uv threads](./examples/uv-threads.cpp), [native cpp threads](./recorded/capivara/examples/cpp-native-threads.cpp) or the [v8 custom print function](./recorded/capivara/examples/v8-print-hello.cpp).\n\n### Running the examples\n- You can compile and execute examples by simply executing \n```sh\nmake example-without-extension\n```\nFor example executing the [v8-print-hello.cpp](./recorded/capivara/examples/v8-print-hello.cpp):\n```sh\nmake v8-print-hello\n# Hello, World!...\n```\n## Compiling binaries for other platforms\n\nif you wanna compile binaries it by yourself, I left some scripts in case you wanna compile all binaries by yourself\n\n- [Installing libuv](./recorded/capivara/scripts/libuv-env-script-x86.sh)\n- [Installing v8](./recorded/capivara/scripts/v8-env-script-x86.sh)\n\n## Author\n\n- [ErickWendel](https://github.com/erickwendel)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferickwendel%2Fmyownnode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferickwendel%2Fmyownnode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferickwendel%2Fmyownnode/lists"}