H1 2015 Priorities and Bare-Metal Programming

Mike via Digitalmars-d digitalmars-d at puremagic.com
Sat Jan 31 21:21:14 PST 2015


This is related to the recent publication of D's H1 2015 
Priorities [1], but I suspect this post could create a few 
tangents, so I decided to post it under its own thread.

IMO D has high potential for kernel programming, embedded 
systems, and other bare-metal varieties where high-level language 
features are often not needed or even wanted (but sometimes 
used).  D has some fantastic features for low-level programming 
with great power and convenience, but it is currently heavily 
biased towards platforms with a full-featured, resource abundant 
operating system, and some of it's high-level features get in the 
way.  Periodically, users pop into the forum, ask questions this, 
give it a try, and then leave [2].

There has been the occasional suggestion for a -minimalD compiler 
flag or some other twist, but IMO that's not a very elegant or 
appropriate solution.  I think Rust is headed in a better 
direction with it's "minimal runtime" philosophy [3] and features 
like #![no_std], #![feature(lang_items)], #[lang = "whatever"], 
and extern "rust-intrinsic" [4].  I'm not suggesting D mimic 
Rust's approach, but rather learn from it, and provide an 
attractive alternative that jives with D's way of doing things.

However, when I read "Foster library additions over language 
changes, and raise the bar on language changes", I suspect 
changes to accommodate this kind of programming will be viewed as 
"shuffling the deck".  So, I'm currently on the fence with D.  
Rust and Nim are showing great promise in this domain, Rust has 
already implemented supporting features (as mentioned above), and 
Rust's Zinc project [5] is really catching on.

Is D's core team genuinely interested in this domain?

If you are genuinely interested, are you committed?  And if so, 
what direction would you like to take?  So far, my ideas have 
been very unpopular and I'm growing weary fighting the current.  
How can I contribute in a way that gets us both where we want to 
go?

If you're not particularly interested in this domain, that's OK.  
Perhaps you are interested, but not at this time.  Perhaps you 
are only interested in mobile and mico-PC platforms that have 
full-featured operating systems, but not resource constrained 
bare-metal platforms.  Whatever the case, please let it be known.

Thanks in advance for your constructive comments,

Mike

[1] - 2015 H1 Vision - 
http://forum.dlang.org/post/majurl$2457$1@digitalmars.com
[2] - Why D is not a Systems Programming Language - 
https://github.com/klamonte/cycle/blob/master/docs/no_more_d.md
[3] - Rust Programming Language - http://www.rust-lang.org/
[4] - Writing Safe Unsafe and Low-Level Code in Rust - 
http://doc.rust-lang.org/0.11.0/guide-unsafe.html
[5] - Zinc, the bare metal stack for rust - 
https://github.com/hackndev/zinc


More information about the Digitalmars-d mailing list