On 15 July 2014 17:25, Johannes Pfau via Digitalmars-d <[email protected]> wrote: > You may have seen Mike's talk about D on embedded systems and were > surprised about Iain's comment that using 'shared' as a replacement for > 'volatile' is actually only possible because of a bug in gdc. > > DIP62 describes how to solve this problem and make embedded programming > a first-class citizen in D: > http://wiki.dlang.org/DIP62 > > This is the only language change necessary to make D really perfect for > embedded programming, so it's important that we fix this. > There are some more implementation issues, but these aren't language > problems and easy to fix. > > The DIP provides detailed descriptions and rationales so I won't > copy/paste this information into this post. But please: > > * Read the complete DIP before commenting. I'd took a long time to > write, so it's OK if it takes some time to read ;-) Also your question > might already be answered. > * Although it's explained in the DIP in detail, I must mention this > here again: We need _first-class_ support for embedded programming in > D. Workarounds might be available (peek/poke, inline asm) but it will > be obvious to most C programmers that C has got the better solution > with the volatile qualifier. D enthusiasts might be happy if they can > use workarounds to make D work on microcontrollers. But if we want to > appeal to outsiders we can't confront them with obvious workarounds > and hacks as the first thing they see in D. And if they think embedded > programming is a second class citizen in D, why should they use it > at all? >
More simply put. A volatile keyword would be strictly for hardware access without locks. We have 'shared' for inter-thread communication, and for ensuring that there is an ordered relationship between threads when accessing the same data location at the same time. Regards Iain
