wasm-bindgen is a Rust library and CLI toolchain that facilitates high-level interoperability between Rust-generated WebAssembly modules and JavaScript. It provides a `#[wasm_bindgen]` procedural macro to import JS functions and export Rust functions/structs/enums to JS, along with a post-processing CLI (`wasm-bindgen`) that generates JavaScript and TypeScript glue code for multiple targets (bundler, web, Node.js, Deno, no-modules). The repository also includes runtime crates (`js-sys`, `web-sys`, `wasm-bindgen-futures`, `wasm-bindgen-test`) that offer comprehensive bindings to standard JavaScript APIs and browser Web APIs, generated from WebIDL definitions. The project is the de facto standard for Rust-to-Wasm development, with extensive examples, benchmarks, and a robust test suite covering browser, Node, Deno, and headless environments.
Wails is a Go framework for building cross-platform desktop applications using web frontends (HTML/CSS/JS). It provides a CLI tool for project scaffolding, development server, and building. The architecture consists of a Go backend that communicates with an embedded WebView via a binding system that auto-generates TypeScript/JavaScript wrappers for Go services. It supports Windows (WebView2), macOS (WebKit), Linux (GTK/WebKit), and mobile (iOS/Android). Key entry points include `application.New()` in v3 and `wails.Run()` in v2. External dependencies include the WebView2 runtime on Windows, WebKitGTK on Linux, Cocoa on macOS, and various system libraries. The repository contains both v2 (legacy) and v3 (current) versions, with v3 introducing a new binding generator, built-in task runner (`wake`), improved service lifecycle, and cross-platform scaffolding.
cimgui is a C language binding generator and wrapper library for Dear ImGui, a popular C++ immediate-mode GUI library. It provides a programmatically generated C API (cimgui.h/cpp) that exposes both public and internal ImGui functions, structs, and enums, along with backend-specific wrappers for GLFW, SDL2/3, Vulkan, OpenGL, and DirectX11. The core of the project is a Lua-based code generator (generator.lua, cpp2ffi.lua) that parses ImGui C++ headers and emits C bindings, metadata files (JSON/Lua), and backend implementations. The repository includes example applications demonstrating usage with various graphics backends and a CMake-based build system for easy integration. While not a standalone application, it serves as a foundational library for embedding Dear ImGui in C projects or for generating FFI bindings to other languages (e.g., Python, Rust, C#). The generator is designed to be extensible, supporting custom configurations and inherited types, making it suitable for binding other ImGui-based libraries like cimplot or cimnodes.