From kyle at kyleingraham.com Sat Oct 1 18:29:23 2022 From: kyle at kyleingraham.com (Kyle Ingraham) Date: Sat, 01 Oct 2022 18:29:23 +0000 Subject: typed-router: Django-esque Path Handling for vibe.d Message-ID: Hi all. I use Django and Python for web development in my day job but vastly prefer working in D. I decided to try using D's flexibility to bring a bit of Django's API to vibe.d's routing. The result is a vibe.d router that implements Django's URL dispatching system. The package is available via dub here: https://code.dlang.org/packages/typed_router. Below are the contents of the README explaining a bit about how it works. I welcome any and all feedback! # typed-router A [vibe.d](https://vibed.org/) router that implements [Django's](https://www.djangoproject.com/) URL dispatching system. ```d import typed_router : TypedURLRouter; import vibe.core.core; import vibe.http.server; import vibe.http.status; int main() { auto router = new TypedURLRouter!(); router.get!"/hello///"(&helloUser); auto settings = new HTTPServerSettings; settings.bindAddresses = ["127.0.0.1"]; settings.port = 9000; auto listener = listenHTTP(settings, router); scope (exit) listener.stopListening(); return runApplication(); } void helloUser(HTTPServerRequest req, HTTPServerResponse res, string name, int age) @safe { import std.conv : to; res.contentType = "text/html; charset=UTF-8"; res.writeBody(` Hello, ` ~ name ~ `. You are ` ~ to!string(age) ~ ` years old. `, HTTPStatus.ok); } ``` ## Details typed-router uses D's flexibility to implement key components of Django's URL dispatching system. The end result is a blending of the ergonomics available in Django with the, to me, superior development experience of D. Key components of Django's [URL dispatching system](https://docs.djangoproject.com/en/dev/topics/http/urls/#url-dispatcher) are: - The URL path expression scheme - The ability to extend the path expression scheme through path converters ### URL Path Expression Scheme Django allows the developer to [specify values to be captured](https://docs.djangoproject.com/en/dev/topics/http/urls/#example). This is similar to functionality available in most web frameworks (including vibe.d). Identifiers in angle brackets will be used to extract values from matched paths. Those values are then made available to handlers as strings. After matching the following example path on structure, Django would make `name` and `age` string values available to the path's associated handler: ```python "/hello///" ``` Where things get interesting is Django's URL path expression scheme's path converters. ### Path Converters Captured value specifications can optionally include a path converter. Path converters influence both how their portion of the path is matched when routing, and the type of value passed to an associated handler. Take the following path as an example: ```python "/hello///" ``` `name` has no path converter and so would be matched as a string. `age` on the other hand has the `int` path converter which matches against integers and passes an integer value to the path's handler. A request to `/hello/ash/12/` would match against this path while a request to `/hello/ash/twelve/` would not. Behind the scenes, path converters are objects that: - Hold a regex pattern for values they match against - Understand how to convert string values to the path converter's return type ### TypedURLRouter typed-router provides `TypedURLRouter` which is a vibe.d router that understands Django's URL path expression scheme. Paths are parsed at compile-time using built-in or user-provided path converters. Built-in path converters match [Django's built-in set](https://docs.djangoproject.com/en/dev/topics/http/urls/#path-converters). User-specified path converters must first be defined as structs with the following properties: - An `enum` member named `regex` with a regex character class representing strings to match against within a requested path. - A `@safe` `toD` function that accepts a `const string`. The return type can be any desired outside `void`. This function converts strings to the type produced by the path converter. #### User-defined Path Converter Example ```d import typed_router : bindPathConverter, TypedURLRouter; import vibe.core.core; import vibe.http.server; import vibe.http.status; struct NoNinesIntConverter { enum regex = "[0-8]+"; // Ignores '9' int toD(const string value) @safe { import std.conv : to; return to!int(value); } } int main() { auto router = new TypedURLRouter!([bindPathConverter!(NoNinesIntConverter, "nonines")]); router.get!"/hello///"(&helloUser); auto settings = new HTTPServerSettings; settings.bindAddresses = ["127.0.0.1"]; settings.port = 9000; auto listener = listenHTTP(settings, router); scope (exit) listener.stopListening(); return runApplication(); } void helloUser(HTTPServerRequest req, HTTPServerResponse res, string name, int age) @safe { import std.conv : to; res.contentType = "text/html; charset=UTF-8"; res.writeBody(` Hello, ` ~ name ~ `. You are ` ~ to!string(age) ~ ` years old. `, HTTPStatus.ok); } ``` #### Handlers Handlers given to `TypedURLRouter` (like with `URLRouter`) should at the very least return `void` and accept an `HTTPServerRequest` and an `HTTPServerResponse`. Values extracted from the request's path are saved to `HTTPServerRequest.params` as strings. If the parameter signature for a handler is extended with the types returned by its path's path converters then `TypedURLRouter` will additionally use the path converters' `toD` functions to pass converted values to the handler. ## Roadmap - Middleware (there is currently no way to specify handlers to be called for every path) - Matching the API for vibe.d's `URLRouter` - Set of valid handler signatures - Handler registration functions e.g. `post` - Per-router path prefixes From will at gwillians.com Sun Oct 2 00:31:05 2022 From: will at gwillians.com (Willian) Date: Sun, 02 Oct 2022 00:31:05 +0000 Subject: D + Qt + QtDesigner In-Reply-To: References: Message-ID: On Wednesday, 28 September 2022 at 01:39:34 UTC, Ali ?ehreli wrote: > On 9/27/22 16:21, Vladimir Marchevsky wrote: > > > Considering licensing model of Qt and political decisions of > Qt > > Foundation > > Those were the reasons why my friends Barbara and Ansel started > CopperSpice: > > https://www.copperspice.com > > Ali How can I use CopperSpice with Qt + Dlang? From acehreli at yahoo.com Sun Oct 2 07:00:20 2022 From: acehreli at yahoo.com (=?UTF-8?Q?Ali_=c3=87ehreli?=) Date: Sun, 2 Oct 2022 00:00:20 -0700 Subject: D + Qt + QtDesigner In-Reply-To: References: Message-ID: On 10/1/22 17:31, Willian wrote: > How can I use CopperSpice with Qt + Dlang? Normally, one needs D bindings for C and C++ libraries. Barbara offered help to work with people experienced in D to produce such bindings. Ali From johan_forsberg_86 at hotmail.com Sun Oct 2 11:17:01 2022 From: johan_forsberg_86 at hotmail.com (Imperatorn) Date: Sun, 02 Oct 2022 11:17:01 +0000 Subject: typed-router: Django-esque Path Handling for vibe.d In-Reply-To: References: Message-ID: On Saturday, 1 October 2022 at 18:29:23 UTC, Kyle Ingraham wrote: > Hi all. I use Django and Python for web development in my day > job but vastly prefer working in D. I decided to try using D's > flexibility to bring a bit of Django's API to vibe.d's routing. > The result is a vibe.d router that implements Django's URL > dispatching system. > > [...] Nice! From carlosgomes at gmail.com Sun Oct 2 12:00:04 2022 From: carlosgomes at gmail.com (Carlos) Date: Sun, 02 Oct 2022 12:00:04 +0000 Subject: D + Qt + QtDesigner In-Reply-To: References: Message-ID: On Sunday, 2 October 2022 at 07:00:20 UTC, Ali ?ehreli wrote: > On 10/1/22 17:31, Willian wrote: > > > How can I use CopperSpice with Qt + Dlang? > > Normally, one needs D bindings for C and C++ libraries. > > Barbara offered help to work with people experienced in D to > produce such bindings. > > Ali Could some D-experienced people in this community help to Barbara to produce such bindings? From barbara at copperspice.com Mon Oct 3 01:22:24 2022 From: barbara at copperspice.com (Barbara) Date: Mon, 03 Oct 2022 01:22:24 +0000 Subject: D + Qt + QtDesigner In-Reply-To: References: Message-ID: On Sunday, 2 October 2022 at 00:31:05 UTC, Willian wrote: > On Wednesday, 28 September 2022 at 01:39:34 UTC, Ali ?ehreli > wrote: >> On 9/27/22 16:21, Vladimir Marchevsky wrote: >> >> > Considering licensing model of Qt and political decisions of >> Qt >> > Foundation >> >> Those were the reasons why my friends Barbara and Ansel >> started CopperSpice: >> >> https://www.copperspice.com >> >> Ali > > How can I use CopperSpice with Qt + Dlang? CopperSpice is a derivative of Qt and offers roughly the same API with a much better implementation. For example the meta object compiler is not required as we implemented the functionality in pure C++. Our CS Overview documentation contains a migration guide to CS. https://www.copperspice.com/docs/cs_overview/cs-migration.html We do not have D bindings (as of yet) and our team would be happy to work with other developers to create them. Barbara From acehreli at yahoo.com Tue Oct 4 05:26:53 2022 From: acehreli at yahoo.com (=?UTF-8?Q?Ali_=c3=87ehreli?=) Date: Mon, 3 Oct 2022 22:26:53 -0700 Subject: Ali introduced D at Northeastern University Message-ID: DConf 2022 speaker Mike Shah[1] had invited me to give a presentation for the computer science students at Northeastern University. I was there this past Friday having a great time not only presenting but also meeting with the students, drinking non-virtual beer bought by Steven Schveighoffer. :) Mike has just posted the video on his YouTube channel: https://www.youtube.com/watch?v=0JL9uT_XGZE Ali [1] https://dconf.org/2022/#mikes From johan_forsberg_86 at hotmail.com Tue Oct 4 22:10:33 2022 From: johan_forsberg_86 at hotmail.com (Imperatorn) Date: Tue, 04 Oct 2022 22:10:33 +0000 Subject: Ali introduced D at Northeastern University In-Reply-To: References: Message-ID: On Tuesday, 4 October 2022 at 05:26:53 UTC, Ali ?ehreli wrote: > DConf 2022 speaker Mike Shah[1] had invited me to give a > presentation for the computer science students at Northeastern > University. > > I was there this past Friday having a great time not only > presenting but also meeting with the students, drinking > non-virtual beer bought by Steven Schveighoffer. :) > > Mike has just posted the video on his YouTube channel: > > https://www.youtube.com/watch?v=0JL9uT_XGZE > > Ali > > [1] https://dconf.org/2022/#mikes This really was a splendid presentation ? Thanks Ali From arjan at ask.me.to Wed Oct 5 07:58:59 2022 From: arjan at ask.me.to (Arjan) Date: Wed, 05 Oct 2022 07:58:59 +0000 Subject: Ali introduced D at Northeastern University In-Reply-To: References: Message-ID: On Tuesday, 4 October 2022 at 05:26:53 UTC, Ali ?ehreli wrote: > DConf 2022 speaker Mike Shah[1] had invited me to give a > presentation for the computer science students at Northeastern > University. > > I was there this past Friday having a great time not only > presenting but also meeting with the students, drinking > non-virtual beer bought by Steven Schveighoffer. :) > > Mike has just posted the video on his YouTube channel: > > https://www.youtube.com/watch?v=0JL9uT_XGZE > > Ali > > [1] https://dconf.org/2022/#mikes Really a great presentation! From aldacron at gmail.com Wed Oct 5 16:49:54 2022 From: aldacron at gmail.com (Mike Parker) Date: Wed, 05 Oct 2022 16:49:54 +0000 Subject: DConf Online '22 Submission Deadline Approaching Message-ID: As a reminder, the deadline for DConf Online '22 submissions is October 9th. We currently do not have enough to fill the two-day schedule, so if you've been thinking submitting something, now is the time to do it. All the details are on the homepage here: https://dconf.org/2022/online/index.html#schedule I look forward to seeing what you send me! From matheus at gmail.com Thu Oct 6 12:50:35 2022 From: matheus at gmail.com (matheus) Date: Thu, 06 Oct 2022 12:50:35 +0000 Subject: Ali introduced D at Northeastern University In-Reply-To: References: Message-ID: On Tuesday, 4 October 2022 at 05:26:53 UTC, Ali ?ehreli wrote: > DConf 2022 speaker Mike Shah[1] had invited me to give a > presentation for the computer science students at Northeastern > University... Awesome, I really like the presentation a lot and this should be shared more, these kind of videos is good to show the strength of the language. By the way, the way the way the slides was presented + small window showing Ali is good and should be used in the futures DConf too. Thanks for doing this Ali and sharing with us, Matheus. From aldacron at gmail.com Sat Oct 8 15:33:59 2022 From: aldacron at gmail.com (Mike Parker) Date: Sat, 08 Oct 2022 15:33:59 +0000 Subject: On the D Blog --- DIP1000: Memory Safety in a Modern Systems Language Part 2 Message-ID: Ate Eskola continues his DIP 1000 tutorial series on the blog. Part 1 covered slices and pointers. In Part 2, he explains how it all works with references. I want to thank Ate for his patience and his time with this one. He sent me the first draft of this several weeks ago, and it went through a much longer process of editing and reviewing than normal because of significant delays on my end, and he ended up writing multiple drafts. It's an important series, though, given how it serves as an introduction to memory safety in D. Thanks for all the work, Ate! The blog: https://dlang.org/blog/2022/10/08/dip1000-memory-safety-in-a-modern-systems-programming-language-part-2/ Reddit: https://www.reddit.com/r/programming/comments/xyvfnh/memory_safety_in_the_d_programming_language_part/ From newshound2 at digitalmars.com Sat Oct 8 23:11:17 2022 From: newshound2 at digitalmars.com (Walter Bright) Date: Sat, 8 Oct 2022 16:11:17 -0700 Subject: Ali introduced D at Northeastern University In-Reply-To: References: Message-ID: Just posted it in the "New" section of HackerNews From fqbqrr at 163.com Sun Oct 9 12:50:02 2022 From: fqbqrr at 163.com (zjh) Date: Sun, 09 Oct 2022 12:50:02 +0000 Subject: On the D Blog --- DIP1000: Memory Safety in a Modern Systems Language Part 2 In-Reply-To: References: Message-ID: On Saturday, 8 October 2022 at 15:33:59 UTC, Mike Parker wrote: > ... `Good` article. From aldacron at gmail.com Mon Oct 10 07:16:22 2022 From: aldacron at gmail.com (Mike Parker) Date: Mon, 10 Oct 2022 07:16:22 +0000 Subject: D Community Conversations: Walter Bright on the Origins of D Part 2 Message-ID: Walter sat down with me over Jitsi Meet a couple of weeks ago for the second part of our conversation about the origins of D. Part One covered the years before D and how they impacted the development of D, from his early inspiration for the game 'Empire', through his college years, his time at Boeing, and his career as a compiler developer. If you missed it, you can see it here: https://youtu.be/-kkMYJN3MnA In Part Two, we talk about some of his early design decisions, including a few hits and misses, and some of his thoughts behind them. Why did he change his mind on adding templates and operator overloading? What's the story with the strict class struct dichotomy? That and more are all right here: https://youtu.be/G6b62HmsO6M There's more I would have loved to have talked to him about, but I'll be able to get to some of it in a future conversation somewhere down the road. Before then, I have plans to drag someone else onto Jitsi with me for the next conversation. I have a list of people to pounce on, and the first one to accept will be my next guest. From acehreli at yahoo.com Tue Oct 11 18:01:05 2022 From: acehreli at yahoo.com (=?UTF-8?Q?Ali_=c3=87ehreli?=) Date: Tue, 11 Oct 2022 11:01:05 -0700 Subject: Ali introduced D at Northeastern University In-Reply-To: References: Message-ID: On 10/8/22 16:11, Walter Bright wrote: > Just posted it in the "New" section of HackerNews > On the front page at the moment. Ali From ItIsEncapsulatedOrItisNot at gmail.com Thu Oct 13 00:46:09 2022 From: ItIsEncapsulatedOrItisNot at gmail.com (ItIsEncapsulatedOrItisNot) Date: Thu, 13 Oct 2022 00:46:09 +0000 Subject: D Community Conversations: Walter Bright on the Origins of D Part 2 In-Reply-To: References: Message-ID: On Monday, 10 October 2022 at 07:16:22 UTC, Mike Parker wrote: > private to the module? arggh@!!!!!FGFEETHH$%U$SHERRTT From dave287091 at gmail.com Thu Oct 13 00:50:09 2022 From: dave287091 at gmail.com (Dave P.) Date: Thu, 13 Oct 2022 00:50:09 +0000 Subject: D Community Conversations: Walter Bright on the Origins of D Part 2 In-Reply-To: References: Message-ID: On Monday, 10 October 2022 at 07:16:22 UTC, Mike Parker wrote: > Walter sat down with me over Jitsi Meet a couple of weeks ago > for the second part of our conversation about the origins of D. > [...] I enjoyed these talks! From ItIsEncapsulatedOrItisNot at gmail.com Thu Oct 13 00:52:28 2022 From: ItIsEncapsulatedOrItisNot at gmail.com (ItIsEncapsulatedOrItisNot) Date: Thu, 13 Oct 2022 00:52:28 +0000 Subject: D Community Conversations: Walter Bright on the Origins of D Part 2 In-Reply-To: References: Message-ID: On Thursday, 13 October 2022 at 00:46:09 UTC, ItIsEncapsulatedOrItisNot wrote: > On Monday, 10 October 2022 at 07:16:22 UTC, Mike Parker wrote: >> > > private to the module? > > arggh@!!!!!FGFEETHH$%U$SHERRTT btw. The version of D that I program in, has BOTH private to the module AND private to the class. The world did not collapse. My programs are now clearer than ever, has less bugs, and still work, just fine. From acehreli at yahoo.com Thu Oct 13 01:33:54 2022 From: acehreli at yahoo.com (=?UTF-8?Q?Ali_=c3=87ehreli?=) Date: Wed, 12 Oct 2022 18:33:54 -0700 Subject: D Community Conversations: Walter Bright on the Origins of D Part 2 In-Reply-To: References: Message-ID: On 10/12/22 17:52, ItIsEncapsulatedOrItisNot wrote: > On Thursday, 13 October 2022 at 00:46:09 UTC, ItIsEncapsulatedOrItisNot > wrote: Creative new name. However, although access rights are related to encapsulation, they don't provide it. Encapsulation is encapsulation. > My programs are now clearer than ever, has less bugs, and still work, > just fine. If you removed all private keywords from your programs absolutely nothing would change. Ali From dkorpel at gmail.com Thu Oct 13 19:18:07 2022 From: dkorpel at gmail.com (Dennis) Date: Thu, 13 Oct 2022 19:18:07 +0000 Subject: ctod: a tool that translates C code to D Message-ID: # ctod **GitHub:** https://github.com/dkorpel/ctod **Dub:** https://code.dlang.org/packages/ctod --- In the summer of 2020, before ImportC, I wrote a tool to help me with my D translations of C libraries: [glfw-d](https://code.dlang.org/packages/glfw-d) and [libsoundio-d](https://code.dlang.org/packages/libsoundio-d). I wanted to publish it at some point but kind of forgot about it, until [Steven Schveighoffer asked about it](https://github.com/dkorpel/glfw-d/discussions/18) last week for his [D translation of raylib](https://github.com/schveiguy/draylib). That made me inspired to work on it again, and I finally fixed the Windows build, so I want to share it now. It uses [tree-sitter-c](https://github.com/tree-sitter/tree-sitter-c) to parse .c or .h files including preprocessor directives, and then replaces C syntax patterns with roughly equivalent D patterns wherever it needs and can. Because tree-sitter is very good at error-recovery, it will always output a best-effort translated .d file, no matter the content of the .c file. Example input file main.c: ```C #include #define TAU 6.283185307179586476925 int main(void) { char buf[32]; sprintf(buf, "tau = %f\n", TAU); Wait, this line is not C syntax ? return 0; } ``` Output main.d: ```D module main; @nogc nothrow: extern(C): __gshared: public import core.stdc.stdio; enum TAU = 6.283185307179586476925; int main() { char[32] buf; sprintf(buf.ptr, "tau = %f\n", TAU); Wait, this_ line is_; not C syntax ? return 0; } ``` The output is supposed to be a good starting point for manual translation: tedious syntax changes are done for you, but you're left with the task of translating (non-trivial) macros, fixing errors because of D's stricter type system, and other misc things ctod doesn't translate properly yet (see also [issues on GitHub](https://github.com/dkorpel/ctod/issues) ?). With the rise of ImportC the use cases for this tool decrease, but in case you still find yourself translating C to D, I hope this is of use to you! From johan_forsberg_86 at hotmail.com Thu Oct 13 19:24:46 2022 From: johan_forsberg_86 at hotmail.com (Imperatorn) Date: Thu, 13 Oct 2022 19:24:46 +0000 Subject: ctod: a tool that translates C code to D In-Reply-To: References: Message-ID: On Thursday, 13 October 2022 at 19:18:07 UTC, Dennis wrote: > # ctod > **GitHub:** https://github.com/dkorpel/ctod > **Dub:** https://code.dlang.org/packages/ctod > > [...] Looks like it could be a nice addition to the toolbox From schveiguy at gmail.com Thu Oct 13 19:43:25 2022 From: schveiguy at gmail.com (Steven Schveighoffer) Date: Thu, 13 Oct 2022 15:43:25 -0400 Subject: ctod: a tool that translates C code to D In-Reply-To: References: Message-ID: On 10/13/22 3:18 PM, Dennis wrote: > The output is supposed to be a good starting point for manual > translation: tedious syntax changes are done for you, but you're left > with the task of translating (non-trivial) macros, fixing errors because > of D's stricter type system, and other misc things ctod doesn't > translate properly yet (see also [issues on > GitHub](https://github.com/dkorpel/ctod/issues) ?). I want to say, this has been incredibly useful to me! I spent many hours translating one file in raylib, which was about 6000 lines (it's still not completely finished, but only because I'm not currently supporting WASM). Dealing with all the rote tedious issues was the biggest pain. There are tens of thousands of lines of code left to translate, and most of them reside in header-only libraries that raylib sniped from other projects (seen in the "external" directory). In a few hours time, with ctod, I've already translated 3 of these files, and the result means less requirements for C building. My original plan was to just leave the internal stuff as C since it's only used internally for raylib (e.g. audio file reading, compression, etc.). I was going to actually ship binary libraries of the internal C stuff for various architectures so you could just use dub. But now with this tool, I think we have a shot of making a complete port, so no external tools or dependencies are needed! > With the rise of ImportC the use cases for this tool decrease, but in > case you still find yourself translating C to D, I hope this is of use > to you! I want to say something about this. ImportC is great if you want to use an existing library. But it still means you are using a C library. e.g. raylib uses null-terminated strings for all text processing. It uses malloc/free for memory management (and it is actually pretty full of buffer overflow possibilities, as a typical C project might be). Not to mention the lack of overloads... With ImportC I might be able to just use raylib with it's current C API. But with ctod, I can build upon raylib to make a D library that is even more fun and intuitive to use. Thanks Dennis! -Steve From ryuukk.dev at gmail.com Thu Oct 13 21:06:59 2022 From: ryuukk.dev at gmail.com (ryuukk_) Date: Thu, 13 Oct 2022 21:06:59 +0000 Subject: ctod: a tool that translates C code to D In-Reply-To: References: Message-ID: WOW that's pretty cool!! It was always time consuming having to manually port C code, your tool will be very helpful! Thanks a lot for sharing! From ItIsEncapsulatedOrItisNot at gmail.com Fri Oct 14 08:42:57 2022 From: ItIsEncapsulatedOrItisNot at gmail.com (ItIsEncapsulatedOrItisNot) Date: Fri, 14 Oct 2022 08:42:57 +0000 Subject: D Community Conversations: Walter Bright on the Origins of D Part 2 In-Reply-To: References: Message-ID: On Thursday, 13 October 2022 at 01:33:54 UTC, Ali ?ehreli wrote: > On 10/12/22 17:52, ItIsEncapsulatedOrItisNot wrote: > > On Thursday, 13 October 2022 at 00:46:09 UTC, > ItIsEncapsulatedOrItisNot > > wrote: > > Creative new name. However, although access rights are related > to encapsulation, they don't provide it. Encapsulation is > encapsulation. > > > My programs are now clearer than ever, has less bugs, and > still work, > > just fine. > > If you removed all private keywords from your programs > absolutely nothing would change. > > Ali I don't think of 'private' as an 'access right'. I think of it as a programmer assertion - in that it asserts the scope that I want to apply to that property of the class (and to which i expect the compiler to uphold that assertion). Of course I don't need this in functions, since scope is always local to the function (except when its not). From estewh at gmail.com Sat Oct 15 01:02:07 2022 From: estewh at gmail.com (stew) Date: Sat, 15 Oct 2022 01:02:07 +0000 Subject: ctod: a tool that translates C code to D In-Reply-To: References: Message-ID: On Thursday, 13 October 2022 at 19:18:07 UTC, Dennis wrote: > # ctod > **GitHub:** https://github.com/dkorpel/ctod > **Dub:** https://code.dlang.org/packages/ctod > > --- > > In the summer of 2020, before ImportC, I wrote a tool to help > me with my D translations of C libraries: > [glfw-d](https://code.dlang.org/packages/glfw-d) and > [libsoundio-d](https://code.dlang.org/packages/libsoundio-d). I > wanted to publish it at some point but kind of forgot about it, > until [Steven Schveighoffer asked about > it](https://github.com/dkorpel/glfw-d/discussions/18) last week > for his [D translation of > raylib](https://github.com/schveiguy/draylib). That made me > inspired to work on it again, and I finally fixed the Windows > build, so I want to share it now. > > It uses > [tree-sitter-c](https://github.com/tree-sitter/tree-sitter-c) > to parse .c or .h files including preprocessor directives, and > then replaces C syntax patterns with roughly equivalent D > patterns wherever it needs and can. Because tree-sitter is very > good at error-recovery, it will always output a best-effort > translated .d file, no matter the content of the .c file. > > Example input file main.c: > ```C > #include > > #define TAU 6.283185307179586476925 > > int main(void) { > char buf[32]; > sprintf(buf, "tau = %f\n", TAU); > Wait, this line is not C syntax ? > return 0; > } > ``` > > Output main.d: > ```D > module main; > @nogc nothrow: > extern(C): __gshared: > > public import core.stdc.stdio; > > enum TAU = 6.283185307179586476925; > > int main() { > char[32] buf; > sprintf(buf.ptr, "tau = %f\n", TAU); > Wait, this_ line is_; not C syntax ? > return 0; > } > ``` > > > The output is supposed to be a good starting point for manual > translation: tedious syntax changes are done for you, but > you're left with the task of translating (non-trivial) macros, > fixing errors because of D's stricter type system, and other > misc things ctod doesn't translate properly yet (see also > [issues on GitHub](https://github.com/dkorpel/ctod/issues) ?). > > With the rise of ImportC the use cases for this tool decrease, > but in case you still find yourself translating C to D, I hope > this is of use to you! This is cool, I once did a port of DWM (tiling X window manager) to D because I like DWM, I wanted to learn D from within a code base I knew reasonably well and I wanted a pure D window manager, why not? It was quite tedious though and DWM is pretty clean concise C code. As an experiment I just did it again with this tool to try it out and it was fantastic. For that small code base it only took about 15min to port and get compiling and a few more to fix the two minor runtime issues. Without this tool it took several hours to get compiling and then several more to nail down and fix all the runtime bugs. Thanks! From schveiguy at gmail.com Sun Oct 16 12:04:23 2022 From: schveiguy at gmail.com (Steven Schveighoffer) Date: Sun, 16 Oct 2022 12:04:23 +0000 Subject: Beerconf October 2022 Message-ID: # BEERCONF! Beerconf this month is on October 29-30, one day before Halloween. Feel free to wear your D costume, might I suggest a beerconf T shirt? https://www.zazzle.com/store/dlang_swag/products?cg=196874696466206954 ## What is beerconf? Check out the [wiki article](https://wiki.dlang.org/Beerconf). ## Presentations? As usual, anyone who wants to reserve some time to talk about something, let me know. Cheers! ? -Steve From nospam at example.org Sun Oct 16 19:49:08 2022 From: nospam at example.org (Andrea Fontana) Date: Sun, 16 Oct 2022 19:49:08 +0000 Subject: Serverino 0.3.0 - now with windows support Message-ID: Hello there. I've just released a new version of serverino, a simple and ready-to-go http server with zero external dependencies (pure D!). I changed a lot of things under the hood from the last version and tests are welcome. It works on linux, macos and windows. I use only linux, so I didn't test so much on other platforms. I started the project since we need a fast and easy way to setup a server for services, small websites or simply to do some tests on the browser and this is its main focus (but don't worry: it can handle several thousands of requests for seconds) To start a new website just write: ``` dub init test_serverino -t serverino cd test_serverino dub ``` And you're done. More info here: https://github.com/trikko/serverino Andrea From mshah.475 at gmail.com Sun Oct 16 20:36:45 2022 From: mshah.475 at gmail.com (Mike Shah) Date: Sun, 16 Oct 2022 20:36:45 +0000 Subject: Ali introduced D at Northeastern University In-Reply-To: References: Message-ID: On Tuesday, 11 October 2022 at 18:01:05 UTC, Ali ?ehreli wrote: > On 10/8/22 16:11, Walter Bright wrote: >> Just posted it in the "New" section of HackerNews >> > > On the front page at the moment. > > Ali Thanks again Ali :) If there are other folks in the Dlang community who might want to give student-centered talks, please feel free to reach out. Northeastern has a few campuses across the US (Silicon Valley, Seattle, etc), Canada (Vancouver), and London -- so in person is an option as well. -Mike From thezipcreator at protonmail.com Sun Oct 16 22:02:37 2022 From: thezipcreator at protonmail.com (TheZipCreator) Date: Sun, 16 Oct 2022 22:02:37 +0000 Subject: Emu6502: A simple MOS 6502 emulator written in D Message-ID: I've recently been messing around with the MOS 6502 processor which was used in many retro systems of the 1980s, however, what's annoyed me is that there isn't really an easy way just to mess around with code and see what happens. The closest thing is the [Virtual 6502](https://www.masswerk.at/6502/) which is decent, but it's online which means you have to deal with uploading files and such, and it also doesn't really have enough configuration options for my taste. Considering I like D and that I couldn't find a DUB package that already emulated the 6502, I decided to make my own emulator, which is currently called Emu6502 (very original name, I know). It supports most features of the 6502, with the exception of a few small things (which are listed under the TODO section of the readme). Here's an example program: ```d module example; import std.stdio; import emu6502; void main() { ubyte[0x10000] memory; ubyte[] code = [ 0xA2, 0x00, // lda #0 // loop: 0xBD, 0x0E, 0x80, // lda data,x 0x8D, 0x00, 0xE0, // sta $E000 0xC9, 0x00, // cmp #0 0xE8, // inx 0xD0, 0xF5, // bne loop 0x00, // brk // data: .asciiz 'Hello, World!\n' 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x2C, 0x20, 0x57, 0x6F, 0x72, 0x6C, 0x64, 0x21, 0x0A, 0x00 ]; // put code into memory foreach(i, b; code) memory[0x8000+i] = b; // set reset vector memory[0xFFFC] = 0x00; memory[0xFFFD] = 0x80; // create emulator auto emu = new Emu6502( (ushort address) { return memory[address]; }, (ushort address, ubyte value) { if(address == 0xE000) write(cast(char)value); else memory[address] = value; }, (ubyte n) {} ); emu.reset(); emu.throwExceptionOnBreak = true; // run until brk triggered try { while(true) emu.step(); } catch(BreakException) {} } ``` Links: [Github Repo](https://github.com/TheZipCreator/emu6502) [DUB Package](https://code.dlang.org/packages/emu6502) From garrett at damore.org Mon Oct 17 05:21:10 2022 From: garrett at damore.org (Garrett D'Amore) Date: Mon, 17 Oct 2022 05:21:10 +0000 Subject: A new Tree-Sitter Grammar for D Message-ID: I'm happy to announce that I've created what I believe is a complete, or at least very nearly so, Tree-Sitter grammar for D. You can find it at https://github.com/gdamore/tree-sitter-d Tree-Sitter is a tool that enables dynamic AST generation for a variety of purposes, and is becoming quite popular with many editor projects. I've tested this grammar with as many different sources as I can find, including the test cases for the DMD compiler itself, as well as various other community sources and proprietary sources. It does not include support for preview syntaxes for bit fields or shortened function bodies, but I believe it should cover just about every other case. I've been using this with the Helix editor, along with the Serve-D language server, with some success. Included in my repository are queries for highlighting, injection (really just comments), and text objects (so you can navigate across major structures if your editor supports it.). I have not yet implemented indent queries. This work includes a test suite that has a lot of test cases, but of course is probably still far from complete. For folks that care, out of 1067 test cases in the DMD compiler, this parses successfully all but 5. The five that do not parse are ones that contain errors in uninstantiated templates, a problem with #line directives involving multi-line comments (you should never encounter this!) and preview syntax support already mentioned. This grammar is slightly more strict than the officially posted grammar, as some constructs which are flagged only at semantic analysis are caught at parse time in my grammar. (Notably comma expressions are not legal in constructs where they would be evaluated as a single value -- DMD generates a compilation error at semantic analysis time whereas my grammar simply rejects them as legal syntax. This was done to reduce the overall size of the generated parser as reduce the number of conflicts that would have resolution.) I believe this grammar may be the complete and accurate machine readable grammar outside of the DMD compiler itself. Certainly this has fixes to numerous defects found in both libdparse and in the official grammar, although both those projects were extremely useful as foundations to build upon. It is my hope that others will find this useful. I do welcome contributions of all forms -- whether bug reports, additional test cases, or grammar fixes or corrections. I am quite new to both Tree Sitter and to D, so it's entirely possible that I've missed something or misunderstood something! I will probably see if this can be adopted into either the Tree Sitter or DLang community projects -- I'm not sure which is the better location. If you have thoughts please don't hesitate to let me know. I'm quite sure that the grammar itself could probably benefit from some further optimization, and I welcome advice or contributions! From notrealemail at gmail.com Mon Oct 17 05:28:48 2022 From: notrealemail at gmail.com (Tejas) Date: Mon, 17 Oct 2022 05:28:48 +0000 Subject: A new Tree-Sitter Grammar for D In-Reply-To: References: Message-ID: On Monday, 17 October 2022 at 05:21:10 UTC, Garrett D'Amore wrote: > I will probably see if this can be adopted into either the Tree > Sitter or DLang community projects -- I'm not sure which is the > better location. If you have thoughts please don't hesitate to > let me know. I'm quite sure that the grammar itself could > probably benefit from some further optimization, and I welcome > advice or contributions! Please try to put it in tree-sitter official, since that will allow other editors(like the one I use) to automatically provide it as an option. Thanks for this wonderful project, really sad that the cybershadow one is basically stalled, but I sure hope that this replacement will fill in the gap wonderfully!! From thecybershadow.lists at gmail.com Mon Oct 17 06:24:08 2022 From: thecybershadow.lists at gmail.com (Vladimir Panteleev) Date: Mon, 17 Oct 2022 06:24:08 +0000 Subject: A new Tree-Sitter Grammar for D In-Reply-To: References: Message-ID: On Monday, 17 October 2022 at 05:21:10 UTC, Garrett D'Amore wrote: > I'm happy to announce that I've created what I believe is a > complete, or at least very nearly so, Tree-Sitter grammar for D. > > You can find it at https://github.com/gdamore/tree-sitter-d Congratulations! Linking to a response in another thread you pinged - perspective from the existing project: https://github.com/CyberShadow/tree-sitter-d/issues/3#issuecomment-1280343366 From rassoc at posteo.de Mon Oct 17 08:56:41 2022 From: rassoc at posteo.de (rassoc) Date: Mon, 17 Oct 2022 08:56:41 +0000 Subject: A new Tree-Sitter Grammar for D In-Reply-To: References: Message-ID: <13b85d84-6776-c965-1a4b-d5c2b29253d8@posteo.de> On 10/17/22 07:21, Garrett D'Amore via Digitalmars-d-announce wrote: > I'm happy to announce that I've created what I believe is a complete, or at least very nearly so, Tree-Sitter grammar for D. > Woot, thank you for your work on that front! From user1234 at 12.de Mon Oct 17 09:24:17 2022 From: user1234 at 12.de (user1234) Date: Mon, 17 Oct 2022 09:24:17 +0000 Subject: A new Tree-Sitter Grammar for D In-Reply-To: References: Message-ID: On Monday, 17 October 2022 at 06:24:08 UTC, Vladimir Panteleev wrote: > On Monday, 17 October 2022 at 05:21:10 UTC, Garrett D'Amore > wrote: >> I'm happy to announce that I've created what I believe is a >> complete, or at least very nearly so, Tree-Sitter grammar for >> D. >> >> You can find it at https://github.com/gdamore/tree-sitter-d > > Congratulations! > > Linking to a response in another thread you pinged - > perspective from the existing project: > https://github.com/CyberShadow/tree-sitter-d/issues/3#issuecomment-1280343366 As mentioned in your answer, there could be a problem of maintenance why not making the project an official dlang.org project ? I mean "right now", even if unfinished. From ibuclaw at gdcproject.org Mon Oct 17 11:35:22 2022 From: ibuclaw at gdcproject.org (Iain Buclaw) Date: Mon, 17 Oct 2022 11:35:22 +0000 Subject: Beta 2.101.0 Message-ID: Glad to announce the first beta for the 2.101.0 release, ? to the 299 contributors. http://dlang.org/download.html#dmd_beta http://dlang.org/changelog/2.101.0.html As usual please report any bugs at https://issues.dlang.org -Iain From rassoc at posteo.de Mon Oct 17 12:51:58 2022 From: rassoc at posteo.de (rassoc) Date: Mon, 17 Oct 2022 12:51:58 +0000 Subject: Beta 2.101.0 In-Reply-To: References: Message-ID: <9831d8d2-65c4-4c4b-c1a8-06721ad815bd@posteo.de> On 10/17/22 13:35, Iain Buclaw via Digitalmars-d-announce wrote: > Glad to announce the first beta for the 2.101.0 release, ? to the 299 contributors. Thank you and congrats on the first (beta) release as the new release manager! But say, what's happening with the linked issues? Clicking the first few goes back to stuff submitted in 2006 and fixed in 2012ish. Might also explain the high contributor count, some of these names haven't been active in D for years. From ibuclaw at gdcproject.org Mon Oct 17 13:57:26 2022 From: ibuclaw at gdcproject.org (Iain Buclaw) Date: Mon, 17 Oct 2022 13:57:26 +0000 Subject: Beta 2.101.0 In-Reply-To: References: Message-ID: On Monday, 17 October 2022 at 12:51:58 UTC, rassoc wrote: > On 10/17/22 13:35, Iain Buclaw via Digitalmars-d-announce wrote: >> Glad to announce the first beta for the 2.101.0 release, ? to >> the 299 contributors. > > Thank you and congrats on the first (beta) release as the new > release manager! > > But say, what's happening with the linked issues? Clicking the > first few goes back to stuff submitted in 2006 and fixed in > 2012ish. Might also explain the high contributor count, some of > these names haven't been active in D for years. DMD and D Runtime were merged together into one repository, this includes all histories, so I suspects it's picking up all authors from that. You can verify the what was read in by the changelog tools by running: ``` git log --pretty='format:%aN|%aE' v2.100.2..v2.101.0-beta.1 | sort -u ``` See https://github.com/dlang/tools/blob/master/contributors.d#L81 I think for this release only, we can work around this by using pathspecs to exclude druntime. ``` ( git -C dmd log --pretty='format:%aN|%aE' v2.100.2..upstream/stable ':!druntime' git -C dmd log --pretty='format:%aN|%aE' v2.100.2..upstream/stable druntime git -C druntime log --pretty='format:%aN|%aE' v2.100.2..upstream/stable ) | sort -u ``` From aldacron at gmail.com Mon Oct 17 14:10:49 2022 From: aldacron at gmail.com (Mike Parker) Date: Mon, 17 Oct 2022 14:10:49 +0000 Subject: D Language Foundation Meeting September 2022 Monthly Meeting Summary Message-ID: The D Language Foundation's monthly meeting for September 2022 took place on September 2nd at 14:00 UTC. The following were in attendance: * Andrei Alexandrescu * Walter Bright * Iain Buclaw * Ali ?ehreli * Max Haughton * Martin Kinkelin * Dennis Korpel * Razvan Nitu * Mike Parker * Robert Schadek ### Iain Over the preceding month, Iain had little going on with D due to a personal situation. Most of the work he'd done had been on the infrastructure project and not on the compiler. He noted that I had migrated the dlang.org and dlang.io DNS servers to Cloudflare, and that several records had failed to transfer across (we had some other hiccups, but Iain, Vladimir Panteleev, Petar Kirov, and Mathias Lang, provided invaluable assistance in resolving those). We had managed to recover most of them. The dlang.io domain had been maintained mostly by volunteers from the community. When Iain went through the DNS records, he discovered that a number of them were pointing to documentation sites on servers that were no longer available. He cleaned that up for us. He talked about how he had set up a bucket for docarchives.dlang.io and downloads.dlang.org on the Backblaze account. The DNS for the doc archives was now pointing to the new bucket (via a Cloudflare worker), and all of the documentation for 2.068 - 2.099 was available there. The DNS for the latter was still pointing to the AWS download site, as Martin Nowak was still packaging and uploading the 2.100.2 release. Once that was out, Iain planned to set up a Cloudflare worker to point downloads/download.dlang.org at our new Backblaze downloads bucket. Those are now live. He would like to eventually work out how to automatically deploy to our new setup via GitHub Actions. For those who missed my mentions of this in the past, by moving to Backblaze + Cloudflare, we are paying only for storage. Both are part of the Bandwidth Alliance. As long as we have Cloudflare in front of our Backblaze buckets, [we have free data transfer](https://www.backblaze.com/blog/backblaze-and-cloudflare-partner-to-provide-free-data-transfer/). I reminded him that at our DConf meeting he had complained about the state of our build system and how it needed to be cleaned up. At the time, Atila said something like, "Sounds like you're volunteering." He was joking, but he there was also a serious question there. I asked Iain if he would be up to taking it on. He agreed to oversee it. I don't know what his plans are in terms of priorities, but I'm sure we'll hear more about this in the not-too-distant future. ### Robert One of the problems we had in migrating the DNS records was an issues.dlang.org outage. That was a bit of a scare. Because of it, Robert ran one of the scripts he'd developed for the Bugzilla->GitHub migration to collect all of the Bugzilla issues as JSON files on his disk. As a next step, he needed to get the software in a state so that, with a GitHub access token, he can migrate the issues. He said the code was "about 95% there". He would need to run it one more time to make sure everything is right, then make the move. One thing he'll need when the time comes is to put Bugzilla into read-only mode during the migration. Martin reminded Robert that the compiler suggests posting to issues.dlang.org in certain error messages, so that will need to be updated as well. Robert said he would do so. Iain noted that Vladimir had also been working on a way to backup all of the Bugzilla issues. ### Martin Martin started by complimenting the DConf speakers. He had watched the livestreams and said the talks were at a "great level". In recent weeks he'd had little time for D development of any kind. For LDC, he worked on bitfield support for the upcoming release for ImportC. He said it seemed ImportC was now able to compile zlib thanks to Walter's work, and if it really works on all platforms, then it's a nice acheivement that shows ImportC has potential. That said, he found that implementing bitfield support in LDC was the PITA he'd expected it to be. It means that now LDC has to use 24-bit and 48-bit integer types and such in their LLVM IR like clang does. He encountered a frontend problem in the very first test cases where the bitfields end up with an 8-byte struct when it should be 4 bytes as with GCC and clang on Linux. He filed an issue for it. So there are still corner cases that need to be ironed out. Other than that, Nicholas Wilson had been working on LLVM 15 support and had asked for help in the forums. It's not trivial work. But Martin's first priority was the D 2.101.0 release, primarily work involving the shift to the DMD/DRuntime monorepo. He'd not had time to follow through with that on stable, so it was going to take some time before the next LDC release. Finally, he brought up again a persistent DMD issue that has been affecting him with his work at Symmetry. It's a problem with the reliance on the semantic order of the root modules being processed. In some cases, switching the order of root modules results in compilation errors. At first, it was specific to using `-allinst`, but now they're seeing an error related to `@safe` in one case, and linker errors in another. It can be triggered by just removing an unused import. He's found no workaround for it. Max (also a Symmetry employee) told Martin he had worked out roughly what the problem was and suggested they get together for a few hours to work out a fix. Martin went on vacation for a couple of weeks shortly after the meeting, and they hadn't gotten together yet last I heard. ### Razvan Razvan said that he and Dennis had been working on extracting some tasks from the vision document and [created some projects in our GitHub project planner](https://github.com/orgs/dlang/projects). He walked us through what they had done so far, said that it should be publicly viewable, and talked about how we could use it. The main goal is that it should serve as a one-stop-shop for contributors looking for impactful projects to work on. One thing they would like to use this for is to help in new contributors get started with some Bootcamp projects. He suggested that Walter and Atila could create some projects there for some of the things on their plates and maybe someone else can pick them up. [He has since posted about it in the forums](https://forum.dlang.org/thread/ktfdceqpxpoplwzdpnkf at forum.dlang.org). ### Dennis Dennis only had one remark: migrating our Bugzilla issues to GitHub will benefit our use of GitHub Projects. ### Max Max said he had little to report but needed to get his TODO list sorted. He said he would like to help Nicholas with the LLVM 15 support for LDC. (In a subsequent meeting Max and I had, he said that of all the projects on his TODO list, the one for 8-bit floating point emulation was the one he could probably finish first and is working on that.) He said that he and Steven Schveighoffer had found a bug in the way that DMD merges the types of pointers, e.g., it will merge `int*` and `void*` to `int*`, and that is now fixed. Fixing that also fixed a bug in the template argument matching code, so it was a two-birds-with-one-stone thing. ### Me I let everyone know that I had finally received the footage from the camera in the back of the room at DConf. I'd already been granted access to the recorded versions of the talks, which are identical to what is in the livestream. Those were free, but Symmetry had to pay an additional fee for the camera footage (and a big thanks to them for doing so). I let everyone know I would start editing the videos the following week. (I'll be finished with day two in a few days; I'm working on Max's talk now). Next, I gave an update on some boring admin stuff regarding reimbursements for DConf speakers. Finally, I noted that I had spoken to Weka's Eyal Lotem at DConf. He said their biggest remaining sticking point is what happens after a move, which is what originally prompted [one of their employees to write DIP1014](https://github.com/dlang/DIPs/blob/master/DIPs/accepted/DIP1014.md), which introduced `opPostMove` and was accepted. It was never implemented and now never will be, thanks to [the approval of copy constructors in DIP1018](https://github.com/dlang/DIPs/blob/master/DIPs/accepted/DIP1018.md) intended to replace post blits. That eventually led Walter to introduce [DIP1040 to propose move constructors](https://github.com/dlang/DIPs/blob/master/DIPs/DIP1040.md), among other things. Max has since taken over responsibility for the DIP. At DConf, I'd asked Eyal if he and/or his coworkers could take a good look at the DIP and let us know if that solves their problem. He agreed, and has since provided Max with feedback. I believe Max has a question or two yet to answer, but we're hoping the collaboration here will result in a stronger DIP for the next review round. ### Walter Walter had begun going through all the DIP 1000 bugs. He and Dennis had submitted fixes for several of them, but they were all stalled due to failures in the Buildkite projects. A general problem he finds with the Buildkite projects: if something goes wrong, what are we supposed to do about it? He finds this quite frustrating. Dennis noted that the DIP 1000 Buildkite failures were related to the preview switch. It's only a few projects that actually fail, others have deprecation warnings. He has been going through the failing projects and submitting PRs to them. It's taking time, as it depends on the maintainers merging the PRs and tagging new releases for code.dlang.org. A benefit of this is it has led him to find the causes of some DIP 1000 bugs. Another problem was that std.logger was crashing in its unit tests, preventing the test suite from running [as described in Issue #23286](https://issues.dlang.org/show_bug.cgi?id=23286). Razvan noted this was only happening in 32-bit builds. Robert was the original author of std.experimental.logger, so he looked into it [and submitted a fix a few days later](https://github.com/dlang/phobos/pull/8557) that has since been merged. Finally, Walter said that he finds that the test suite "just seems to stall on things", causing massive delays and interrupting his workflow. This led to a discussion about how Buildkite works, and through this we learned that Walter had never been set up with a Buildkite account, so he doesn't have an interface to restart builds. Aside from his frustrations with the autotesters, he's happy about the current state of the DIP 1000 bugs. The issues he and Dennis have been closing have been fixable and they had whittled down the list to a small number. Overall, he thinks we're in good shape with it. He's also been working on ImportC, and he's happy with how things are progressing overall with the language. ### Ali Ali informed us of his invitation from Mike Shah to speak at Northeastern University on September 30. Steven Schveighoffer was also planning to attend. The plan was a talk and then a Boston meetup. Steve had invited some people who used to attend the Boston meetups. Ali subsequently [posted a link to the recorded talk here in the Announce forum](https://forum.dlang.org/thread/thggap$1lqi$1 at digitalmars.com). I noted that Mike Shah had submitted a DConf Online talk, and that [he has a D tutorial series on YouTube](https://www.youtube.com/playlist?list=PLvv0ScY6vfd9Fso-3cB4CGnSlW0E4btJV). Ali had also been working on the hobby project that [he had talked about in his DConf '22 lightning talk](https://youtu.be/ksNGwLTe0Ps?t=20372). He expects he'll eventually post it on code.dlang.org, and that the discoveries he's made while working on it could make for a potential future DConf talk. He didn't submit anything to me for this year's DConf Online, so maybe we'll see something down the road. But he has since [announced his new `alid` package](https://forum.dlang.org/thread/tfmtfe$1a5b$1 at digitalmars.com) in the dub repository. ### The next meeting The next meeting was a quarterly meeting that took place on October 7. I plan to post the summary for that meeting on the last Friday of this month. As always, if you have something you'd like us to put on the agenda of one of our meetings, please let me know and I'll see about arranging it (though I may recommend [posting in the forums first](https://forum.dlang.org/thread/vphguaninxedxopjkzdk at forum.dlang.org), depending on the topic). From rikki at cattermole.co.nz Mon Oct 17 14:25:28 2022 From: rikki at cattermole.co.nz (rikki cattermole) Date: Tue, 18 Oct 2022 03:25:28 +1300 Subject: D Language Foundation Meeting September 2022 Monthly Meeting Summary In-Reply-To: References: Message-ID: On 18/10/2022 3:10 AM, Mike Parker wrote: > ### Iain > Over the preceding month, Iain had little going on with D due to a > personal situation. Most of the work he'd done had been on the > infrastructure project and not on the compiler. He noted that I had > migrated the dlang.org and dlang.io DNS servers to Cloudflare, and that > several records had failed to transfer across (we had some other > hiccups, but Iain, Vladimir Panteleev, Petar Kirov, and Mathias Lang, > provided invaluable assistance in resolving those). We had managed to > recover most of them. I wonder if this has anything to do with run.dlang.org is using a certificate for run.dlang.io for a while now (and hence not usable). But either way, awesome work everyone! From ajieskola at gmail.com Mon Oct 17 20:21:10 2022 From: ajieskola at gmail.com (Dukc) Date: Mon, 17 Oct 2022 20:21:10 +0000 Subject: D Language Foundation Meeting September 2022 Monthly Meeting Summary In-Reply-To: References: Message-ID: On Monday, 17 October 2022 at 14:10:49 UTC, Mike Parker wrote: > Finally, I noted that I had spoken to Weka's Eyal Lotem at > DConf. He said their biggest remaining sticking point is what > happens after a move, which is what originally prompted [one of > their employees to write > DIP1014](https://github.com/dlang/DIPs/blob/master/DIPs/accepted/DIP1014.md), which introduced `opPostMove` and was accepted. It was never implemented and now never will be, thanks to [the approval of copy constructors in DIP1018](https://github.com/dlang/DIPs/blob/master/DIPs/accepted/DIP1018.md) intended to replace post blits. Huh? First off, DIP1018 replaces postblits, not postmoves. DIP1040, if accepted, will replace postmoves, but it's currently post community 1, not accepted. Second, the readme file at dips directory says DIP1014 is implemented in dmd 2.088.1. Something is wrong here. Regardless, thanks for keeping us up to date. From aldacron at gmail.com Mon Oct 17 21:42:21 2022 From: aldacron at gmail.com (Mike Parker) Date: Mon, 17 Oct 2022 21:42:21 +0000 Subject: D Language Foundation Meeting September 2022 Monthly Meeting Summary In-Reply-To: References: Message-ID: On Monday, 17 October 2022 at 20:21:10 UTC, Dukc wrote: > On Monday, 17 October 2022 at 14:10:49 UTC, Mike Parker wrote: >> Finally, I noted that I had spoken to Weka's Eyal Lotem at >> DConf. He said their biggest remaining sticking point is what >> happens after a move, which is what originally prompted [one >> of their employees to write >> DIP1014](https://github.com/dlang/DIPs/blob/master/DIPs/accepted/DIP1014.md), which introduced `opPostMove` and was accepted. It was never implemented and now never will be, thanks to [the approval of copy constructors in DIP1018](https://github.com/dlang/DIPs/blob/master/DIPs/accepted/DIP1018.md) intended to replace post blits. > > Huh? First off, DIP1018 replaces postblits, not postmoves. > DIP1040, if accepted, will replace postmoves, but it's > currently post community 1, not accepted. Yes, I know. My point is that 1018 motivated 1040: 1018 replaced postblits with copy constructors, and 1040 replaces `opPostMove` with move constructors for consistency. And I didn't say that 1040 has been accepted, I said 1014 was accepted. And regarding 1040, I said "we're hoping the collaboration here will result in a stronger DIP for the next review round." > > Second, the readme file at dips directory says DIP1014 is > implemented in dmd 2.088.1. Something is wrong here. As far as I know, they aren't yet implemented. The changelog for 2.088.1 says nothing about it. So yes, that looks like it's incorrect. I hadn't noticed that before. > > Regardless, thanks for keeping us up to date. You're welcome. From ibuclaw at gdcproject.org Tue Oct 18 12:46:55 2022 From: ibuclaw at gdcproject.org (Iain Buclaw) Date: Tue, 18 Oct 2022 12:46:55 +0000 Subject: Beta 2.101.0 In-Reply-To: References: Message-ID: This has been fixed, ? to the 62 contributors. ;-) From matus at email.cz Tue Oct 18 16:05:08 2022 From: matus at email.cz (M.M.) Date: Tue, 18 Oct 2022 16:05:08 +0000 Subject: Beta 2.101.0 In-Reply-To: References: Message-ID: On Tuesday, 18 October 2022 at 12:46:55 UTC, Iain Buclaw wrote: > This has been fixed, ? to the 62 contributors. ;-) Great that you're taking over from Martin Nowak. Thank you and good luck. From rassoc at posteo.de Tue Oct 18 16:22:59 2022 From: rassoc at posteo.de (rassoc) Date: Tue, 18 Oct 2022 16:22:59 +0000 Subject: Beta 2.101.0 In-Reply-To: References: Message-ID: <674636e3-ee3e-fe13-ca95-85792504b623@posteo.de> On 10/18/22 14:46, Iain Buclaw via Digitalmars-d-announce wrote: > This has been fixed, ? to the 62 contributors. ;-) Aye, easier to digest change log now, thanks for your work, Iain! From zorael at gmail.com Tue Oct 18 22:04:50 2022 From: zorael at gmail.com (Anonymouse) Date: Tue, 18 Oct 2022 22:04:50 +0000 Subject: Beta 2.101.0 In-Reply-To: References: Message-ID: On Monday, 17 October 2022 at 11:35:22 UTC, Iain Buclaw wrote: > [...] Thanks! Question. From the changelog; > Posix (excl. Darwin): Switch default GC signals from SIGUSR1/2 > to SIGRTMIN/SIGRTMIN+1 What should I tell gdb to handle to catch those? `SIG33` and `SIG34`? From ibuclaw at gdcproject.org Tue Oct 18 23:22:04 2022 From: ibuclaw at gdcproject.org (Iain Buclaw) Date: Tue, 18 Oct 2022 23:22:04 +0000 Subject: Beta 2.101.0 In-Reply-To: References: Message-ID: On Tuesday, 18 October 2022 at 22:04:50 UTC, Anonymouse wrote: > On Monday, 17 October 2022 at 11:35:22 UTC, Iain Buclaw wrote: >> [...] > > Thanks! > > Question. From the changelog; > >> Posix (excl. Darwin): Switch default GC signals from SIGUSR1/2 >> to SIGRTMIN/SIGRTMIN+1 > > What should I tell gdb to handle to catch those? `SIG33` and > `SIG34`? Check whether it is already stopping on those signals. ``` (gdb) handle SIG33 SIG34 Signal Stop Print Pass to program Description SIG33 Yes Yes Yes Real-time event 33 SIG34 Yes Yes Yes Real-time event 34 ``` If not, append `stop` to the above command. From nospam at example.org Wed Oct 19 08:30:57 2022 From: nospam at example.org (Andrea Fontana) Date: Wed, 19 Oct 2022 08:30:57 +0000 Subject: parserino 0.2.0 Message-ID: Hello! Finally I released the public version of parserino, a html5 parser for linux, macos and windows. Link: https://github.com/trikko/parserino From rassoc at posteo.de Wed Oct 19 10:05:19 2022 From: rassoc at posteo.de (rassoc) Date: Wed, 19 Oct 2022 10:05:19 +0000 Subject: parserino 0.2.0 In-Reply-To: References: Message-ID: <152dbf80-9e48-ef5a-3202-086f0c683a18@posteo.de> On 10/19/22 10:30, Andrea Fontana via Digitalmars-d-announce wrote: > Finally I released the public version of parserino, a html5 parser for linux, macos and windows. Sweet, thanks for sharing, will check it out later! From johan_forsberg_86 at hotmail.com Wed Oct 19 18:27:31 2022 From: johan_forsberg_86 at hotmail.com (Imperatorn) Date: Wed, 19 Oct 2022 18:27:31 +0000 Subject: Beta 2.101.0 In-Reply-To: References: Message-ID: On Monday, 17 October 2022 at 11:35:22 UTC, Iain Buclaw wrote: > Glad to announce the first beta for the 2.101.0 release, ? to > the 299 contributors. > > http://dlang.org/download.html#dmd_beta > http://dlang.org/changelog/2.101.0.html > > As usual please report any bugs at > https://issues.dlang.org > > -Iain Nice work man From oracle.gm at gmail.com Thu Oct 20 13:24:27 2022 From: oracle.gm at gmail.com (psyscout) Date: Thu, 20 Oct 2022 13:24:27 +0000 Subject: parserino 0.2.0 In-Reply-To: References: Message-ID: Wow, it uses builtin browser. Cool! I have a coming project, will try it out. Thank You for your effort! From nospam at example.org Thu Oct 20 13:29:40 2022 From: nospam at example.org (Andrea Fontana) Date: Thu, 20 Oct 2022 13:29:40 +0000 Subject: parserino 0.2.0 In-Reply-To: References: Message-ID: On Thursday, 20 October 2022 at 13:24:27 UTC, psyscout wrote: > Wow, it uses builtin browser. Cool! I have a coming project, > will try it out. Thank You for your effort! You're welcome :) From first.last at spam.org Fri Oct 21 11:58:55 2022 From: first.last at spam.org (Guillaume Piolat) Date: Fri, 21 Oct 2022 11:58:55 +0000 Subject: parserino 0.2.0 In-Reply-To: References: Message-ID: On Wednesday, 19 October 2022 at 08:30:57 UTC, Andrea Fontana wrote: > Hello! > > Finally I released the public version of parserino, a html5 > parser for linux, macos and windows. > > Link: > https://github.com/trikko/parserino Nice, thanks for this! From Daniel Sat Oct 22 20:56:46 2022 From: Daniel (Daniel) Date: Sat, 22 Oct 2022 20:56:46 +0000 Subject: Dots = D Object-oriented Type System, a new public GitHub project Message-ID: I'm starting a side project here: https://github.com/enjoysmath/Dots Post in issues forum if interested enough to join the study group / project or email me: fruitfulapproach On gmail. I personally think the kernel, whenever it gets coded out enough, is going to be blazingly fast. After we tackle B. Pierce's first two books on proof assistants, I think we should get into Automated Theorem Proving, and there are some nice books out on that as well. Thank you, D community, for providing awesome tools for software developers. From enjoysmath at gmail.com Sat Oct 22 21:58:54 2022 From: enjoysmath at gmail.com (Enjoys Math) Date: Sat, 22 Oct 2022 21:58:54 +0000 Subject: parserino 0.2.0 In-Reply-To: References: Message-ID: On Wednesday, 19 October 2022 at 08:30:57 UTC, Andrea Fontana wrote: > Hello! > > Finally I released the public version of parserino, a html5 > parser for linux, macos and windows. > > Link: > https://github.com/trikko/parserino Nice! So it's D's answer to Python's BeautifulSoup. From destructionator at gmail.com Sat Oct 22 22:14:26 2022 From: destructionator at gmail.com (Adam D Ruppe) Date: Sat, 22 Oct 2022 22:14:26 +0000 Subject: parserino 0.2.0 In-Reply-To: References: Message-ID: On Saturday, 22 October 2022 at 21:58:54 UTC, Enjoys Math wrote: > Nice! So it's D's answer to Python's BeautifulSoup. D has had a html tag soup parser since 2009 in my dom.d. The parserino might be more html5 compliant specifically though, as mine was written before html5 was a thing. It's been updated with it but still an independent parser (capable of reading in-the-wild html as well as things like xml and even php tags) instead of following their specific algorithm. From nospam at example.org Sun Oct 23 08:40:09 2022 From: nospam at example.org (Andrea Fontana) Date: Sun, 23 Oct 2022 08:40:09 +0000 Subject: parserino 0.2.0 In-Reply-To: References: Message-ID: On Saturday, 22 October 2022 at 22:14:26 UTC, Adam D Ruppe wrote: > On Saturday, 22 October 2022 at 21:58:54 UTC, Enjoys Math wrote: >> Nice! So it's D's answer to Python's BeautifulSoup. > > D has had a html tag soup parser since 2009 in my dom.d. > > The parserino might be more html5 compliant specifically > though, as mine was written before html5 was a thing. It's been > updated with it but still an independent parser (capable of > reading in-the-wild html as well as things like xml and even > php tags) instead of following their specific algorithm. Ah-ah! Adam is worried ? Just kidding, he helped me to compile parserino on Windows, so thanks Adam! From japplegame at gmail.com Thu Oct 27 07:37:41 2022 From: japplegame at gmail.com (Jack Applegame) Date: Thu, 27 Oct 2022 07:37:41 +0000 Subject: A new Tree-Sitter Grammar for D In-Reply-To: References: Message-ID: On Monday, 17 October 2022 at 05:21:10 UTC, Garrett D'Amore wrote: > I'm happy to announce that I've created what I believe is a > complete, or at least very nearly so, Tree-Sitter grammar for D. > > You can find it at https://github.com/gdamore/tree-sitter-d What do you think? If I don't want to #StandWithUkraine, should I stay away from your protestware? From johan_forsberg_86 at hotmail.com Thu Oct 27 08:12:30 2022 From: johan_forsberg_86 at hotmail.com (Imperatorn) Date: Thu, 27 Oct 2022 08:12:30 +0000 Subject: A new Tree-Sitter Grammar for D In-Reply-To: References: Message-ID: On Thursday, 27 October 2022 at 07:37:41 UTC, Jack Applegame wrote: > On Monday, 17 October 2022 at 05:21:10 UTC, Garrett D'Amore > wrote: >> I'm happy to announce that I've created what I believe is a >> complete, or at least very nearly so, Tree-Sitter grammar for >> D. >> >> You can find it at https://github.com/gdamore/tree-sitter-d > > What do you think? If I don't want to #StandWithUkraine, should > I stay away from your protestware? You should remember this is not a political platform and just use the code if you find it useful. From johan_forsberg_86 at hotmail.com Thu Oct 27 09:07:57 2022 From: johan_forsberg_86 at hotmail.com (Imperatorn) Date: Thu, 27 Oct 2022 09:07:57 +0000 Subject: A new Tree-Sitter Grammar for D In-Reply-To: References: Message-ID: On Monday, 17 October 2022 at 05:21:10 UTC, Garrett D'Amore wrote: > I'm happy to announce that I've created what I believe is a > complete, or at least very nearly so, Tree-Sitter grammar for D. > > [...] Nice project! Good work From johan_forsberg_86 at hotmail.com Thu Oct 27 17:34:16 2022 From: johan_forsberg_86 at hotmail.com (Imperatorn) Date: Thu, 27 Oct 2022 17:34:16 +0000 Subject: D Language Foundation Meeting September 2022 Monthly Meeting Summary In-Reply-To: References: Message-ID: On Monday, 17 October 2022 at 14:10:49 UTC, Mike Parker wrote: > The D Language Foundation's monthly meeting for September 2022 > took place on September 2nd at 14:00 UTC. The following were in > attendance: > > [...] Thank for all the work you're doing From first.last at spam.org Thu Oct 27 18:18:59 2022 From: first.last at spam.org (Guillaume Piolat) Date: Thu, 27 Oct 2022 18:18:59 +0000 Subject: Beta 2.101.0 In-Reply-To: References: Message-ID: On Monday, 17 October 2022 at 11:35:22 UTC, Iain Buclaw wrote: > Glad to announce the first beta for the 2.101.0 release, ? to > the 299 contributors. > > http://dlang.org/download.html#dmd_beta > http://dlang.org/changelog/2.101.0.html > > As usual please report any bugs at > https://issues.dlang.org > > -Iain Nice, thanks for the release. Not urgent at all but: https://issues.dlang.org/show_bug.cgi?id=23437 https://issues.dlang.org/show_bug.cgi?id=23307 In my tests everything works else! From johan_forsberg_86 at hotmail.com Thu Oct 27 19:46:47 2022 From: johan_forsberg_86 at hotmail.com (Imperatorn) Date: Thu, 27 Oct 2022 19:46:47 +0000 Subject: Serverino 0.3.0 - now with windows support In-Reply-To: References: Message-ID: On Sunday, 16 October 2022 at 19:49:08 UTC, Andrea Fontana wrote: > Hello there. > > I've just released a new version of serverino, a simple and > ready-to-go http server with zero external dependencies (pure > D!). > > I changed a lot of things under the hood from the last version > and tests are welcome. > > It works on linux, macos and windows. I use only linux, so I > didn't test so much on other platforms. > > I started the project since we need a fast and easy way to > setup a server for services, small websites or simply to do > some tests on the browser and this is its main focus (but don't > worry: it can handle several thousands of requests for seconds) > > To start a new website just write: > > ``` > dub init test_serverino -t serverino > cd test_serverino > dub > > ``` > > And you're done. > > More info here: https://github.com/trikko/serverino > > Andrea Nice, sometimes you just need some quick and dirty http From aldacron at gmail.com Fri Oct 28 02:28:28 2022 From: aldacron at gmail.com (Mike Parker) Date: Fri, 28 Oct 2022 02:28:28 +0000 Subject: Draft DIPs for Review Message-ID: We've had a few draft DIPs submitted to the PR queue recently. They could use some folks to look them over and provide some feedback: https://github.com/dlang/DIPs/pulls?q=is%3Apr+is%3Aopen+ I intend to get the review queue moving again as soon as I have a DIP author who's ready to go. From schveiguy at gmail.com Fri Oct 28 03:09:13 2022 From: schveiguy at gmail.com (Steven Schveighoffer) Date: Thu, 27 Oct 2022 23:09:13 -0400 Subject: Beerconf October 2022 In-Reply-To: References: Message-ID: On 10/16/22 8:04 AM, Steven Schveighoffer wrote: > # BEERCONF! > > Beerconf this month is on October 29-30, one day before Halloween. Beerconf in 2 days, see you then! -Steve From nospam at example.org Fri Oct 28 07:42:26 2022 From: nospam at example.org (Andrea Fontana) Date: Fri, 28 Oct 2022 07:42:26 +0000 Subject: Serverino 0.3.0 - now with windows support In-Reply-To: References: Message-ID: On Thursday, 27 October 2022 at 19:46:47 UTC, Imperatorn wrote: > Nice, sometimes you just need some quick and dirty http That's exactly one of the use cases :) From johan_forsberg_86 at hotmail.com Fri Oct 28 09:25:11 2022 From: johan_forsberg_86 at hotmail.com (Imperatorn) Date: Fri, 28 Oct 2022 09:25:11 +0000 Subject: Serverino 0.3.0 - now with windows support In-Reply-To: References: Message-ID: On Friday, 28 October 2022 at 07:42:26 UTC, Andrea Fontana wrote: > On Thursday, 27 October 2022 at 19:46:47 UTC, Imperatorn wrote: >> Nice, sometimes you just need some quick and dirty http > > That's exactly one of the use cases :) I'm on Windows 10 and your three-liner just worked, thanks From nospam at example.org Fri Oct 28 09:30:21 2022 From: nospam at example.org (Andrea Fontana) Date: Fri, 28 Oct 2022 09:30:21 +0000 Subject: Serverino 0.3.0 - now with windows support In-Reply-To: References: Message-ID: On Friday, 28 October 2022 at 09:25:11 UTC, Imperatorn wrote: > On Friday, 28 October 2022 at 07:42:26 UTC, Andrea Fontana > wrote: >> On Thursday, 27 October 2022 at 19:46:47 UTC, Imperatorn wrote: >>> Nice, sometimes you just need some quick and dirty http >> >> That's exactly one of the use cases :) > > I'm on Windows 10 and your three-liner just worked, thanks Good to know. I have no windows machine, but unit-tests passed on github :) Anyway if you see something strange, keep me posted on github! Andrea From johan_forsberg_86 at hotmail.com Fri Oct 28 09:52:30 2022 From: johan_forsberg_86 at hotmail.com (Imperatorn) Date: Fri, 28 Oct 2022 09:52:30 +0000 Subject: Serverino 0.3.0 - now with windows support In-Reply-To: References: Message-ID: On Friday, 28 October 2022 at 09:30:21 UTC, Andrea Fontana wrote: > On Friday, 28 October 2022 at 09:25:11 UTC, Imperatorn wrote: >> On Friday, 28 October 2022 at 07:42:26 UTC, Andrea Fontana >> wrote: >>> On Thursday, 27 October 2022 at 19:46:47 UTC, Imperatorn >>> wrote: >>>> Nice, sometimes you just need some quick and dirty http >>> >>> That's exactly one of the use cases :) >> >> I'm on Windows 10 and your three-liner just worked, thanks > > Good to know. I have no windows machine, but unit-tests passed > on github :) > Anyway if you see something strange, keep me posted on github! > > Andrea ? From rikki at cattermole.co.nz Sat Oct 29 10:14:31 2022 From: rikki at cattermole.co.nz (rikki cattermole) Date: Sat, 29 Oct 2022 23:14:31 +1300 Subject: Beerconf October 2022 In-Reply-To: References: Message-ID: And now for some good news! Its almost Halloween, so grab your candy and any spooky brews you may have, and join us for a ghostly chat! https://meet.jit.si/Dlang2022OctoberBeerConf From johan_forsberg_86 at hotmail.com Sat Oct 29 11:59:56 2022 From: johan_forsberg_86 at hotmail.com (Imperatorn) Date: Sat, 29 Oct 2022 11:59:56 +0000 Subject: Beerconf October 2022 In-Reply-To: References: Message-ID: On Saturday, 29 October 2022 at 10:14:31 UTC, rikki cattermole wrote: > And now for some good news! > > Its almost Halloween, so grab your candy and any spooky brews > you may have, and join us for a ghostly chat! > > https://meet.jit.si/Dlang2022OctoberBeerConf ? From feepingcreature at gmail.com Sat Oct 29 18:00:50 2022 From: feepingcreature at gmail.com (FeepingCreature) Date: Sat, 29 Oct 2022 18:00:50 +0000 Subject: Beerconf October 2022 In-Reply-To: References: Message-ID: On Saturday, 29 October 2022 at 10:14:31 UTC, rikki cattermole wrote: > And now for some good news! > > Its almost Halloween, so grab your candy and any spooky brews > you may have, and join us for a ghostly chat! > > https://meet.jit.si/Dlang2022OctoberBeerConf I wish you'd announce the time a bit in advance. :) From schveiguy at gmail.com Sun Oct 30 01:50:33 2022 From: schveiguy at gmail.com (Steven Schveighoffer) Date: Sat, 29 Oct 2022 21:50:33 -0400 Subject: Beerconf October 2022 In-Reply-To: References: Message-ID: On 10/29/22 2:00 PM, FeepingCreature wrote: > On Saturday, 29 October 2022 at 10:14:31 UTC, rikki cattermole wrote: >> And now for some good news! >> >> Its almost Halloween, so grab your candy and any spooky brews you may >> have, and join us for a ghostly chat! >> >> https://meet.jit.si/Dlang2022OctoberBeerConf > > I wish you'd announce the time a bit in advance. :) I don't want to announce a time, because I don't know what time it can be started. I'm in the US, so I'm usually asleep when it's started. But I do try to announce 2 weeks before and then 2 days before. -Steve From john.loughran.colvin at gmail.com Sun Oct 30 21:47:40 2022 From: john.loughran.colvin at gmail.com (John Colvin) Date: Sun, 30 Oct 2022 21:47:40 +0000 Subject: Beerconf October 2022 In-Reply-To: References: Message-ID: On Sunday, 30 October 2022 at 01:50:33 UTC, Steven Schveighoffer wrote: > On 10/29/22 2:00 PM, FeepingCreature wrote: >> On Saturday, 29 October 2022 at 10:14:31 UTC, rikki cattermole >> wrote: >>> And now for some good news! >>> >>> Its almost Halloween, so grab your candy and any spooky brews >>> you may have, and join us for a ghostly chat! >>> >>> https://meet.jit.si/Dlang2022OctoberBeerConf >> >> I wish you'd announce the time a bit in advance. :) > > I don't want to announce a time, because I don't know what time > it can be started. I'm in the US, so I'm usually asleep when > it's started. > > But I do try to announce 2 weeks before and then 2 days before. > > -Steve Quiet here, I?m around for a couple of hours, come say hi! ? From johan_forsberg_86 at hotmail.com Mon Oct 31 16:45:53 2022 From: johan_forsberg_86 at hotmail.com (Imperatorn) Date: Mon, 31 Oct 2022 16:45:53 +0000 Subject: This week in D Message-ID: http://dpldocs.info/this-week-in-d/Blog.Posted_2022_10_31.html