SharpLang
Compiles .NET/C# to native code using LLVM framework. No longer active, consider migrating to https://github.com/dotnet/corert
Install / Use
/learn @xen2/SharpLangREADME
SharpLang
This project is no longer active, consider migrating to https://github.com/dotnet/corert
SharpLang is a .NET (MSIL) compiler front-end for LLVM.
It allows you to compile C# and other .NET languages code to any supported LLVM backend.
Official twitter account: https://twitter.com/SharpLangDev
Licence
BSD 2-clause license.
Documentation
Objectives
- Fill the gap between managed flexibility/safety/productivity (on by default) and native speed/control (when you actually need it)
- Supports many platforms (including Windows, MacOSX, mobile devices, consoles, browser)
- Performance oriented
- Lightweight runtime
- Some .NET features that implies too much overhead for to their actual uses will be emulated or dropped (i.e. array covariance -- unsafe and huge performance implication)
- Various technical choices to avoid unecessary conversions and interop with other languages
- Provide a good starting point to implement "M#" features as soon as possible (http://joeduffyblog.com/2013/12/27/csharp-for-systems-programming/)
- Flexible and controllable (.NET shouldn't be a black box anymore; optimize what you want, pay for what you actually use, etc...)
Planned features
It's still a early work in progress. Any help/feedback is welcome!
What's working
- Codegen (unit tested)
- Supports most .NET opcodes
- Branching
- Classes and interfaces
- Generics (expanded like C++ template)
- PInvoke (simple, no marshalling)
- Delegate (no multicast delegate yet)
- Boxing
- Exceptions (DWARF and SEH)
- Converts huge libraries (i.e. Mono mscorlib, System, System.Core, System.Xml, etc...)
- Reflection (only types, no method/field yet)
- x86 and x64
- Simple code linked against SharpLang-compiled Mono mscorlib is starting to work (i.e. WinForms+SharpDX)
What's next
- Driver/Linker
- Runtime (probably lot will be imported from CoreCLR)
- Reflection (method, fields, custom attributes)
- Threads, Locks, etc...
- I/O
- Marshalling
- Vararg
- GC integration (either CoreCLR, Mono or BoehmGC)
- Cross-platform
- Emscripten HTML5 (javascript) support
- Linux/MacOSX support
- Android, iOS
- Code quality
- Documentation
Future
- Dynamic loading
- Performance extensions
- Non-nullable types
- SIMD support
- More control over class/struct layouting (allocate class on stack, etc...)
- Various "M#" improvements
- Uniqueness and Reference Immutability for Safe Parallelism: http://research.microsoft.com/pubs/170528/msr-tr-2012-79.pdf
- Lifetime control (unique/owned pointers, stack alloc as much as possible with pure functions, etc...)
- RAII (struct destructors)
- Use and extend Roslyn for new language extensions
- Direct (or at least easy) access to C++ (probably with help of libclang)
- Other platforms
Various technical details
Here for now, until later moved to a more specific documentation.
- ~~UTF8 string (UTF16 was choosed mainly because of Windows API, but UTF8 is more space efficient, API compatible with char* and avoid many conversions)~~
- String/Array indirection to more easily carve substring/subarrays.
Related Skills
node-connect
349.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
349.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
349.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
