SerpentOS departs from Dlang

Greggor Greggor at notareal.email
Wed Sep 20 08:50:01 UTC 2023


On Friday, 15 September 2023 at 21:49:17 UTC, ryuukk_ wrote:
> On Friday, 15 September 2023 at 17:39:41 UTC, M.M. wrote:
>> In February there were some exciting news on the usage of 
>> dlang within serpent-os linux distribution, quite a large open 
>> source project of Ikey Doherty and the team around him.
>>
>> Unfortunately, the project decided to leave dlang behind, and 
>> to embrace golang and rust instead... in part due to some 
>> hiccups in dlang and due to contributors pushing for more 
>> mainstream languages:
>>
>> https://serpentos.com/blog/2023/09/06/oxidised-moss/
>>
>> Pity that it did not succeed. It would be a great showcase for 
>> the marvelous dlang.
>
> That's unfortunate..
>
> Ikey seems to still want to use D, so the main driving factor 
> is the contributors, i wonder what are the exact reasons, 
> pseudo memory safety can't be the only reason
>
> To be honest, I wouldn't blame contributors for looking at more 
> mainstream languages, who still want to do their switch cases 
> this way:
>
> ```D
> switch (it)
> {
>     case MySuperLongEnum.MySuperLongValueA:
>        result = do_something_a();
>     break;
>     case MySuperLongEnum.MySuperLongValueB:
>        result = do_something_b();
>     break;
>     case MySuperLongEnum.MySuperLongValueC:
>        result = do_something_c();
>     break;
> }
> ```
>
> When other languages have it cleaner:
>
> ```D
> result = switch (it)
> {
>     .MySuperLongValueA: do_something_a();
>     .MySuperLongValueB: do_something_b();
>     .MySuperLongValueC: do_something_c();
> }
> ```
>
> Improving ergonomics won't necessarily attract people, probably 
> not, but i'm pretty sure that'll make contributors of existing 
> projects not request to change language because the ergonomics 
> are so poor
>
> Even C# understand that and made the appropriate changes across 
> their language and even improve their compiler to avoid the 
> urge to switch to Go (NativeAOT), even Java made appropriate 
> language changes in hope to stay relevant, why only D should be 
> frozen? Acting like the world depend on D
>
> D has many benefits, but some areas need lot of love, this 
> reminds me of this dude in an online chat, he said the reason 
> why he stick to Rust was because of Rust's enum.. not because 
> of memory safety
>
> Hopefully more wake up calls like this one will resonate with 
> the D foundation

I do not think the lack of a little bit of syntax sugar is what 
is hurting D.
Also `with` is your friend.
```D
auto result = (){with(MySuperLongEnum) final switch(it){
     case MySuperLongValueA: return do_something_a();
     case MySuperLongValueB: return do_something_b();
     case MySuperLongValueC: return do_something_c();
}}();
```
full version that will compile, if you want to play with this.
```D
@safe:
enum MySuperLongEnum{
     MySuperLongValueA,
     MySuperLongValueB,
     MySuperLongValueC,
}
int do_something_a(){ return 1; }
int do_something_b(){ return 42; }
int do_something_c(){ return 99; }

void main(){
     auto it = MySuperLongEnum.MySuperLongValueB;
     auto result = (){with(MySuperLongEnum) final switch(it){
         case MySuperLongValueA: return do_something_a();
         case MySuperLongValueB: return do_something_b();
         case MySuperLongValueC: return do_something_c();
     }}();
     import std.stdio;
     writeln("result: ", result);
}
```



More information about the Digitalmars-d-announce mailing list