C# as you know it but with Go-inspired tooling
source link: https://flattened.net/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
C# as you know it but with Go-inspired tooling (small, selfcontained, and native executables)
bflat
C# as you know it but with Go-inspired tooling
90 MB download with no dependencies. For Linux and Windows. MIT license.Build native apps for LinuxWindowsAndroidUEFI
bflat is a native compiler for C# that comes with everything you need to build C# apps for any of the supported platforms. No additional SDKs or NDKs needed.
Battle-tested fundamentals
Based on parts of the .NET 7 SDK that is trusted by developers all around the world, but reimagined as native-first and stripped to the bare minimum needed to build native apps with C#. Based on CoreCLR's code generator and GC.
Choose your standard library
Comes with two standard libraries: one (DotNet) that is compatible with .NET and supports everything from console to JSON, and another (Zero) that is stripped to bare minimum and doesn't even have a GC.
Build native apps or shared libraries
Produce native apps and native libraries. Consume C# libraries built with bflat from other languages using their respective FFI interface.
Bring your own build system
Invoke bflat directly from terminal, integrate with a shell script, Makefile, or even MSBuild. The choice is yours.
Standard libraries supported by bflat at a glance
DotNet | Zero | |
Primitive types | ✓ | ✓ |
Rich standard library | ✓ | ✗ |
Marshalling-less p/invoke | ✓ | ✓ |
Full p/invoke | ✓ | ✗ |
Garbage collector | ✓ | ✗ |
Exception handling | ✓ | ✗ |
Building apps and libraries | ✓ | ✓ |
Target Linux, Windows, Android | ✓ | ✓ |
Target UEFI | ✗ | ✓ |
Starting app size | 600 kB | 4 kB |
Run C# with no operating system, on bare metal
Build native code or .NET bytecode
Get started
Download and unpack a release, optionally place it on your PATH and look at some samples
$ bflat build --help Description: Compiles the specified C# source files into native code Usage: bflat build [<>...] [options] Arguments: <file list> Options: -d, --define <define> Define conditional compilation symbol(s) -r, --reference <file list> Additional .NET assemblies to include --target <Exe|Shared|WinExe> Build target -o, --out <file> Output file path -c Produce object file, but don't run linker --ldflags <ldflags> Arguments to pass to the linker -x Print the commands --arch <x64|arm64> Target architecture --os <linux|windows|uefi> Target operating system --libc <libc> Target libc (Windows: shcrt|none, Linux: glibc|bionic) -Os, --optimize-space Favor code space when optimizing -Ot, --optimize-time Favor code speed when optimizing -O0, --no-optimization Disable optimizations --no-reflection Disable support for reflection --no-stacktrace-data Disable support for textual stack traces --no-globalization Disable support for globalization (use invariant mode) --no-exception-messages Disable exception messages --no-pie Do not generate position independent executable --separate-symbols Separate debugging symbols (Linux) --no-debug-info Disable generation of debug information --map <file> Generate an object map file -i <library|library!function> Bind to entrypoint statically --feature <Feature=[true|false]> Set feature switch value -res, --resource <<file>[,<name>[,public|private]]> Managed resource to include --stdlib <DotNet|None|Zero> C# standard library to use --deterministic Produce deterministic outputs including timestamps --verbose Enable verbose logging -?, -h, --help Show help and usage information
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK