Deno's Other Open Source Projects The article summarizes several open-source projects developed by the Deno team, all released under the MIT license. Key projects include **rusty_v8** (Rust bindings for the V8 JavaScript engine, now stable with over 3 million downloads), **deno_core** (which builds on rusty_v8 to map JavaScript Promises to Rust Futures for creating custom runtimes), and **rust-urlpattern** (a Rust implementation of the URLPattern web API). Other tools mentioned are **import_map**, **eszip**, **dnt**, **wasmbuild**, and **deno_task_shell**, each designed to solve specific development challenges. Deno's Other Open Source Projects Deno’s codebase - and most of what we build around it - is open source under the permissive MIT license. Over the years, we’ve published dozens of supporting libraries and tools that solve common problems we’ve run into while building Deno. Here are a few we think others may find useful. rusty v8 : Rust bindings to the V8 JavaScript enginedeno core : builds onrusty v8 to provide higher level functionality, like mapping JavaScriptPromises to RustFutures rust-urlpattern : implementsURLPattern web API in Rustimport map : implements the import map spec in Rusteszip andeszip viewer : a binary file format for distributing an entire module graph of TypeScript filessui : a library for embedding data executable files in a cross platform waydnt : Deno to npm package build toolwasmbuild : Build tool to use Rust code in Deno and the browsermonch : lightweight parser, similar tonom , focused on stringsdeno task shell : cross-platform shell fordeno task .flaky test : atttribute macro for running a flaky test multiple timesvnotify : monitor millions of S3 objects without external dependencies- What’s next Rusty V8 Rusty V8 provides high-quality, zero-overhead Rust bindings to V8’s C++ API, and is the core of the Deno runtime. We made this library, which has undergone over 150 releases and downloaded more than 3 million times on crates.io, stable and production ready last year. You can use Rusty V8 to build custom JavaScript runtimes, run WebAssembly modules, use the V8 Fast API, and much more. Here’s an example of how you can embed JavaScript in a Rust program with rusty v8 : fn main { // Initialize V8. let platform = v8::new default platform 0, false .make shared ; v8::V8::initialize platform platform ; v8::V8::initialize ; // Create a new Isolate and make it the current one. let isolate = &mut v8::Isolate::new v8::CreateParams::default ; // Create a stack-allocated handle scope. let handle scope = &mut v8::HandleScope::new isolate ; // Create a new context. let context = v8::Context::new handle scope, Default::default ; // Enter the context for compiling and running the hello world script. let scope = &mut v8::ContextScope::new handle scope, context ; // Create a string containing the JavaScript source code. let code = v8::String::new scope, "'Hello' + ' World '" .unwrap ; // Compile the source code. let script = v8::Script::compile scope, code, None .unwrap ; // Run the script to get the result. let result = script.run scope .unwrap ; // Convert the result to a string and print it. let result = result.to string scope .unwrap ; println "{}", result.to rust string lossy scope ; } deno core The deno core crate, builds on Rusty V8. Where Rusty V8 is truly exposes V8’s C++ API as directly as possible in Rust, deno core adds “ops” and an event loop. Practically it maps JavaScript Promises onto Rust Futures. The “ops” are marcos which allow users to define functions that cross the boundary between JavaScript and Rust as efficently as possible using V8’s Fast API where possible . We’ve written some blog posts about how one can use deno core to quickly roll your own JavaScript runtime. Although deno core adds a lot on top of Rusty V8, it still lacks many things from the main deno runtime - it has no concept of TypeScript, it has very few APIs - no fetch - and certainly no built-in node modules. rust-urlpattern This crate implements the URLPattern web API in Rust, following the specification as closely as possible. We use this … use urlpattern::UrlPattern; use urlpattern::UrlPatternInput; use urlpattern::UrlPatternInit; use urlpattern::UrlPattern; use urlpattern::UrlPatternInit; use urlpattern::UrlPatternMatchInput; fn main { // Create the UrlPattern to match against. let init = UrlPatternInit { pathname: Some "/users/:id".to owned , ..Default::default }; let pattern =