sdc
所属分类:collect
开发工具:D
文件大小:0KB
下载次数:0
上传日期:2023-07-10 11:34:43
上 传 者:
sh-1993
说明: Snazzy D编译器,
(The Snazzy D Compiler,)
文件列表:
.prettierrc.yaml (318, 2023-12-20)
AUTHORS (44, 2023-12-20)
LICENCE (1093, 2023-12-20)
default.nix (779, 2023-12-20)
docs/ (0, 2023-12-20)
docs/dalloc.md (7050, 2023-12-20)
dub.json (1233, 2023-12-20)
import/ (0, 2023-12-20)
import/java/ (0, 2023-12-20)
import/java/c/ (0, 2023-12-20)
import/java/c/jni.d (24467, 2023-12-20)
import/llvm/ (0, 2023-12-20)
import/llvm/c/ (0, 2023-12-20)
import/llvm/c/analysis.d (2466, 2023-12-20)
import/llvm/c/bitReader.d (3803, 2023-12-20)
import/llvm/c/bitWriter.d (2269, 2023-12-20)
import/llvm/c/core.d (128377, 2023-12-20)
import/llvm/c/disassembler.d (11925, 2023-12-20)
import/llvm/c/errorHandling.d (1890, 2023-12-20)
import/llvm/c/executionEngine.d (7732, 2023-12-20)
import/llvm/c/initialization.d (2028, 2023-12-20)
import/llvm/c/irReader.d (1536, 2023-12-20)
import/llvm/c/linkTimeOptimizer.d (1830, 2023-12-20)
import/llvm/c/linker.d (1540, 2023-12-20)
import/llvm/c/lto.d (23393, 2023-12-20)
import/llvm/c/object.d (4322, 2023-12-20)
import/llvm/c/orcBinding.d (5336, 2023-12-20)
import/llvm/c/support.d (2359, 2023-12-20)
import/llvm/c/target.d (12187, 2023-12-20)
import/llvm/c/targetMachine.d (5923, 2023-12-20)
import/llvm/c/transforms/ (0, 2023-12-20)
import/llvm/c/transforms/IPO.d (2772, 2023-12-20)
import/llvm/c/transforms/passManagerBuilder.d (3418, 2023-12-20)
import/llvm/c/transforms/scalar.d (5834, 2023-12-20)
import/llvm/c/transforms/vectorize.d (1986, 2023-12-20)
... ...
# SDC - The Snazzy D Compiler
This is the home of a [D][0] compiler. SDC is at the moment, particularly
stupid; it is a work in progress. Feel free to poke around, but don't expect it
to compile your code.
The project currently provides a collection of tools:
- [sdc][1], the D compiler.
- [sdunit][2], an utility to run the unit tests in D modules.
- [sdfmt][3], a code formatter for D.
This compiler is based on [libd][4] for D code analysis. It uses [LLVM][5] and
[libd-llvm][6] for codegen and JIT CTFE. It uses [libsdrt][7] to support various
runtime facilities required by programs compiled by SDC.
The code is released under the MIT license (see the LICENCE file for more
details). Contact me at deadalnix@gmail.com.
SDC requires latest DMD release to compile.
[0]: http://dlang.org/
[1]: https://github.com/snazzy-d/sdc/blob/master/src/driver/sdc.d
[2]: https://github.com/snazzy-d/sdc/blob/master/src/driver/sdunit.d
[3]: https://github.com/snazzy-d/sdc/blob/master/src/driver/sdfmt.d
[4]: https://github.com/snazzy-d/sdc/tree/master/src/d
[5]: http://llvm.org/
[6]: https://github.com/snazzy-d/sdc/tree/master/src/d/llvm
[7]: https://github.com/snazzy-d/sdc/tree/master/sdlib
# Goals
Right now, SDC is a work in progress and unusable for any production work. Its
intent is to provide a D compiler as a library (libd) in order to improve the
overall D toolchain by enabling the possibility of developing new tools.
SDC now supports many very advanced features (static ifs, string mixins, CTFE)
of D, but not many basic ones. This is a development choice to allow the
architecturing of the compiler around the hardest features of the language. As a
consequence, SDC has a solid base to build upon.
# What Can It Compile?
See the [tests directory][20] for a sample of what is/should-be working. You can
also build [SDC's runtime library][21], that is compiled using SDC.
[20]: https://github.com/snazzy-d/sdc/tree/master/test
[21]: https://github.com/snazzy-d/sdc/tree/master/sdlib
# Compiling SDC on Linux
You'll need `make` and the latest DMD installed and LLVM 15.
Run `make`.
Then you can run the test suite using `make check`. There should be no
regressions.
SDC requires a recent version of LLVM. If the default llvm-config on your system
is too old, you can specify a newer version via `LLVM_CONFIG`. For instance, on
a debian system, you want to use `LLVM_CONFIG=llvm-config-11 make` .
# Compiling SDC on Mac OS X
You'll need `make` and the latest DMD installed. You'll also need a recent
version of LLVM if you don't already have it. One way to install llvm that's
been tested is to use [Homebrew][40], a package manager for OS X. After
installing it by following instructions from the web page, run the command
`brew install llvm11`, followed by `LLVM_CONFIG=llvm-config-11 make` . If you
are using [MacPorts][41] instead, you can run `sudo port install llvm-11`,
followed by `LLVM_CONFIG=llvm-config-mp-11 make` . You'll also need a recent
version of `nasm`; if `nasm` does not recognise the `macho64` output format, try
upgrading `nasm` to a newer version.
[40]: http://brew.sh/
[41]: http://www.macports.org
# Building SDC as a Nix package
On Linux, you can also use the [Nix package manager][50] to automatically fetch
dependencies and build SDC for you. You may need to use the unstable nix
channel, to have a new enough `dmd` to build SDC. Clone or download this
repository.
To build the executable, run
`nix-build -E "(import {}).callPackage ./. {}"` or
`nix-build -E "(import {}).callPackage ./. {dflags=\"-O -release\";}"`
from the project root directory.
[50]: https://nixos.org
近期下载者:
相关文件:
收藏者: