A cross-platform Common Lisp interface to .NET Core, enabling seamless interop without C++ code.
Bike is a Common Lisp library that provides a full-featured interface to the .NET Core platform, enabling Lisp developers to call .NET code and utilize .NET assemblies directly. It serves as a modern rebirth of the RDNZL project, built entirely without C++ and designed to be fully cross-platform, bringing the power of .NET to the Common Lisp ecosystem. The library handles seamless interoperation, including method calls, object creation, and callbacks, while supporting image deployment for executable distribution.
Common Lisp developers who need to integrate with .NET Core libraries, frameworks, or existing codebases, particularly those working on cross-platform applications (Windows, Linux, macOS) using implementations like SBCL, CCL, or ECL. It is also suited for developers maintaining or migrating from the older RDNZL project.
Developers choose Bike over alternatives because it offers a batteries-included, cross-platform bridge to .NET Core without relying on low-level C++ code, simplifying integration and maintenance. Its automatic runtime discovery, support for image deployment, and handling of foreign thread callbacks provide a robust and seamless interop experience out of the box.
Common Lisp .Net Core Interop
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports Windows, Linux, and macOS with multiple Common Lisp implementations like SBCL, CCL, and ECL, enabling seamless .NET integration across environments.
Uses the `dotnet` command to automatically locate .NET Core runtime and build the interop library, reducing manual configuration.
Allows dumping executable images with uiop for deployment to other machines, facilitating distribution of Lisp apps with .NET dependencies.
Manages callbacks from .NET thread pools, with full support for SBCL and automatic registration for ECL, enhancing interoperability.
Disables all floating-point exceptions to prevent .NET runtime conflicts, leading to NaN results instead of error signals in numerical code, which can obscure bugs.
Async/await syntax is listed as a TODO item, meaning developers must implement custom solutions for modern .NET asynchronous patterns, adding complexity.
Has known bugs like ECL on Windows not building, and untested support on macOS and ARM, limiting reliability in some environments.