SDC needs you -- redux
Shammah Chancellor via Digitalmars-d
digitalmars-d at puremagic.com
Sat Apr 18 10:21:28 PDT 2015
I'm going to re-iterate what deadalnix said. I am doing this because
the thread about SDC got co-opted in this forums usual fashion.
So, let me qualify:
I've been part of this community since late 2001. We've come a long
way. However, believe having another *good* frontend implementation
is absolutely key for our success.
Let me qualify this need with some stats. I don't mean for this list
to in any way knock Walter or DMD, but rather to just stress the value
of SDC to the community and also encourage people who do not want to
spent the time getting over the learning curve for the DMD frontend to
invest some time implementing simple things in SDC.
1) SDC, libd-llvm, and libd together are ~ 30KLOC of idiomatic and very
intelligible D code. Compare this with the 300KLOC for the DMD
frontend.
1.1) The 30KLOC is clean and easy to get into. It took me less than 3
days to get into it and start implementing language features.
1.2) This is enabled by the use of a scheduler to easily handle
complex Dlang features.
1.3) This will enable advanced compiler normally be very difficult to
implement
2) SDC supports a majority of the language at this point, the remaining
work is mostly trivial. (When I say majority, I mean majority in terms
of LOC needed to support, not in terms of implemented pieces of
syntatic sugar)
2.1) We won't need another 250KLOC to get to 100% feature parity.
We're already at something like 80% feature parity by my estimation.
3) SDC is designed also to be a library that can used for tooling in an
easy fashion!
3.1) I work with Golang on a daily basis professionally. The tooling
for golang is a major reason for it's adoption. This tooling looks
like gofix, gofmt, govet, etc. We need this tooling to be able to
succeed.
4) SDC use of fibers and a scheduler allows us to have a very robust
error handling mechanism that DMD will never be able to implement. We
emit beautiful clang-style errors telling you EXACTLY what is wrong
with your code.
5) SDC is fast. It is actually faster than DMD when you move into
template and CTFE land.
6) SDC leverages all the work done by the HUGE llvm group.
7) SDC uses the LLVM JIT for CTFE, this means no double-implementation
of language features for CTFE, and for normal compilation.
8) Because SDC is written in D, is clean, and uses a JIT this opens up
the door for actually exposing compiler AST Nodes *directly* to the
code being compiled. (!!!!!!!!! No more __traits horror when doing
metaprogramming)
9) Because SDC is clean, easy to understand, and easy to implement
language feature on top of, we have been able to find quite a few bugs
in DMD. I have been submitting bug reports back to DMD and actually
causing the mainline D compiler to do a *better* job!
I could go on and on about this. But I would hope that maybe you just
clone the git repo, and start fiddling around and submit some simple
PRs. We recently reorganized our git repos to make it much easier
for people to get started.
Again, I don't mean for this to come off as a knock against DMD or the
work that has been done there over the last 15 years. I also don't
mean to steal any engineering resources from the DMD frontend.
Instead, I am hoping to appeal to those people, who like myself, do not
have the time to understand the DMD frontend and work on it. SDC is
simple, and easy to get started on.
So again, here is our TODO list:
https://github.com/deadalnix/SDC/wiki/TODO-list
I hope you will join Amaury and myself in working on this awesome
project. We have a #slack channel set up to help us work
asynchronously, and I would love it if you send me am email so I can
invite you to the teamchat. Even just having people in the channel to
have discourse with would be helpful!
Cheers,
-Shammah
More information about the Digitalmars-d
mailing list