Of the 44 things on my wish list, I only actually implemented 7, but the rest can wait - I was able to minimize the breaking changes while maximizing the future potential impact in minigui.
Just community announcements this week: new dmd and ldc releases. druntime.dll support included in ldc packaged, joining gdc's option to compile it yourself. If these work in testing it brings much better shared lib support to Windows.
Several interesting community announcements this week: a lightweight D runtime, gdc 11, the IRC channel moved, string interpolation evolves, and more. Also, I continue to work on my projects.
A bunch of little things on my todo list discussed below.
A Vulkan renderer based on SDL was released for Android and desktops from the community, the PixelPerfectEngine got a new announcement, and in my world, I kept working on minigui 2.0.
Walter dropped a basic C compiler in a DMD pr this week, Andrei on evolving Phobos, and meanwhile I've been working on more user interface library code.
Release D 2.096.1!
Another small, quick release to bring a few more little features to the http client library.
A bunch of little things rolled up into tagged releases this week.
Experienced D users surely already know this but newer users should read this tip.
Quick post this week but I spent the weekend dipping my toes into gdc development for the first time...
Also I finally implemented simpledisplay's takeScreenshot function. Only 4 years late.
A rant this week from me, more GC info from the official blog in community announcements.
LDC 1.25 was released last week which has another template optimization that can make a big difference in binary size and compile+link time, and a quick tip on how to do your own closures.
arsd 9.2 tagged with drag and drop + more, then Java class field access added to arsd.jni (via @property imports), and early write support added to arsd.apng pending next tag.
I use D's anonymous classes and even I didn't know how to pass arguments to their constructors until this week!
A quick thought on me on why I like D below.
On the January beerconf (or as i call it, milkconf - basically a 48 hour hangout video call people come and go at random and talk about random things) we were talking about the dip discussion. I started an implementation in this branch on the call:
Some new features and more bugs fixed in arsd libs.
Some bug fixes in arsd libs, idea for a cms.
Explanation on -debug, -g, and some gdb tips.
I spent my code time this week mostly working on application code, but did a little library work on my apng.d and terminal.d.
A chat on Saturday about fibers and udp i/o led to me writing a couple new modules and taking my own advice on tutorials, I started writing some new docs.
I did some small changes to simpleaudio.d to give more control over it, then copied in some other ports from ketmar to the lib for more fun.
Thoughts on tutorial writing benefits, D marketing, and some simpledisplay.d improvements.
I've been talking about a cross-package documentation search for a couple years now and my first attempt didn't work very well, so it went on hold again. Last week, I wrote a new postgresql based index built into adrdox, and this seems to be doing a good job.
I did a livecoding session for DConf on Saturday, the 21st. Didn't quite go as planned, but was good nonetheless.
New selective mouse input in terminal stack, Xft used in simpledisplay to improve TrueType font support
Some improvements to adrdox and a big addition to simpleaudio.d
I added some declarative UDAs to minigui and will talk about it.
I'm on the DConf Online 2020 schedule! Here, I'll give some behind-the-scenes preview on what I plan to talk about.
I'm writing this late and just want to talk about Final Fantasy. You might not find it interesting at all.
Gonna write just a little this time to catch back up: some thoughts on semver and breakage.
I did some improvements to cgi.d's implementation and add the capability to redirect stdout and stderr in terminal.d's embedded emulator.
This week was primarily focused on the newborn baby, but while I could barely type most the days, I did get some reading and planning done.
My baby decided to come so I didn't get a chance to write anything here!
People on the main D forum asked for more little project updates. While one option is adding a mailing list to the forum among other things, I spent part of the weekend to put a little website together people can use here: https://dwidder.arsdnet.net/
I've been busy with work and preparations for the baby that is only about two weeks away, but part of that was to make a little white noise program. Just a few lines of D I will share with you below.
I had to fix some bugs this week so no new "X in D", but the new features themselves are cool...
Continuing my "X in D" series, here I'll talk about my custom taskbar in D with xlib.
Over the weekend, I took last week's Tetris source code and compiled it for the browser, doing minimal ports of required libraries to make that work.
I'm going to start a new series this week, called "X in D". Each entry will be a small program to implement some simple concept. But, I will not limit to just the simple concept like I do for documentation examples - I'll go a little beyond the basics for more fun.
I'll write a bit about how it is easier to use D's classes without druntime than it ever has been before and recent dmd PRs are slated to make it easier and easier.
The DConf isn't official yet, but it looks like they are doing do to an online thing around Nov 21 (which happens to be my birthday btw, lol). I have no idea if I'll try to participate or not at this point. Right now, I can't even think of something to write about here, so I don't know what I'd talk about there either!
Been busy work work but will tell a brief tale about static to dynamic link transitioning in D code.
While the forum went on about DIP 1028, I had some fun with other gadgets and dmd enhancements.
I didn't write blog text last week, so a lot to talk about this week. Meanwhile, gcc 10's D updates can be read here (though the changelog isn't formally merged, the code is!), including static foreach support: https://gcc.gnu.org/pipermail/gcc-patches/2020-May/545326.html
More fun stuff in the arsd repo these last couple days. And btw I got my first eye treatment too and it seems to have been a success I feel improvement already! But still gotta avoid staring at computer screens all the time.
I saw an eye doctor today after a week of pain. I have damage likely from being a computer worker. Should be treatable but if you have eye pain and/or dry eyes... talk to your doctor without waiting months like I did, it is likely to just get worse. And if you are feeling fine, remember to blink while working and frequently look away from the screen to stay that way!
What would I do if I were made dictator of D? More below.
@safe by default discussed, people question if we should call it D3, and Mir libraries get a big update.
I finally released my built-in terminal emulator option on dub and marked it version 6.0... I was hoping to put in a cgi.d server control object too, but instead had to fix bugs in the websocket server and minigui widgets and ran out of time. Hopefully for 6.1 though.
Walter has agreed to try to do an online dconf. No other major movement though but maybe we will try it.
Due to concerns about the COVID-19 disease spreading, DConf 2020 has been cancelled. I suggest we still write some stuff for it and just share it online!
I did some more updates to my service for dub package documentation this week.
I worked a little on terminal.d this week in between day job and house stuff.
DConf is getting Lua architect Roberto Ierusalimschy to speak, and Walter's named argument DIP is being discussed. I see some potential for expansion in it later, but also have no objection to it as-is.
I wrote about how mixin templates actually work for today.
I don't think we should change the attribute defaults. Instead, make the foo: at the top of the file work well.
DConf 2020 was announced this week. It will be on June 17-20 in London, rather than the May we've traditionally done. On the newsgroup, @safe by default was debated.
Lots of open source stuff this week by me!
LDC 1.19 released with more android and AVR (the arduino chip) support built in. I rant on tests and update on JNI and COM.
My Android stuff is now on the dub repo: http://code.dlang.org/packages/d_android
Android code works - big thanks to other people for doing the work in ldc as I'm building on that. Also the JNI stuff I think may be generally useful for D.
The community announcement about a webassembly proposal is solid, and the author has done some good work toward it already. I'm excited to see where he goes with it!
A DIP to remove the ~= operator from slices was shot down by the community, and there were forum posts about benchmarks. I write about why I don't really care for benchmarks.
Socket tutorial today, it may be simple for experienced programmers but hopefully useful to people new to the idea.
I don't have anything to say today, been busy lately.
arsd-official tagged 4.1.4, my 11 1/2 old library demonstrates compatibility with Slackware's gdc package as well as newest dmd.
D on android almost just works out of the box - ldc can build D code, as well as the D runtime, for the android platform and package it into a shared lib. The part I'm fighting with is just integrating it ergonomically.
Another LDC beta, and my thoughts on the PHP to D blog post ideas.
D is about 20 years old now, and wow it has changed a lot over the years. Early D didn't even have templates! It is my opinion it has been reinvented about every five years: first to add templates, then to add immutable, then focusing on an era of more stability. We're about due for another change, and I'm encouraged to see D continue to develop.
Lots of DIP discussions this week and I will write a little about code organization.
Sorry, phoning it in again this time. But dmd 2.088 came out this week and it has __traits(getLocation) which is exciting. I'll have more next week.
I don't have much time to write today, but earlier in the week, I wrote about mixin concepts in D over on Stack Overflow that you might want to check out.
I see gcc 9 and gdc are now in the Slackware Linux package repo, which is fun - D in gcc is something I'm really excited to see.
The SAOC submissions are now in and will be evaluated next week, a new dmd beta came out - with __traits(getLocation) which I'm personally a little excited about - and a bug bounty thing is now live. My hot take below.
My thoughts on invested time and inventions are below.
This week, I wrote a new schedule server. Below, I describe how it works.
I'm sorry I haven't written much these last couple weeks, I have been busy with family.
Not much time to work on D this week. Got some open source contributions, but mostly the free time was spent elsewhere. This next weekend, I'm visiting family so don't expect much then either.
I spent the last week writing a lot of D code. My new framework in cgi.d is now operational, though it still isn't quite done (notably, the timing system isn't done yet!). In this post, I'll briefly describe some of the new stuff.
I've been very busy the last few weeks doing something crazy, which is taking all my time but I can't talk about yet. As a result though, lots of testing and formalization stuff in my libs, I'll write about it soon.
Thee last two weeks have been awfully busy with other stuff, so I haven't had time to write. I have been writing some D though - the arsd repo is about to get new modules for database code generation and web template handling.
adrdox got package releases in a few places, yay. I also wrote more about avoiding stringof.
My thoughts on the potential of the curiously recurring template pattern in D
New LDC beta, GtkD updated (and now uses adrdox for their official docs!!), and I think about CT/RT hybrid tests as well as some more progress on my new web framework.
I was just goofing around with webassembly a bit more this weekend.
I tried to improve cgi.d's build time, but it refused to budge; in this case, Phobos dependency was not to blame, so I have to keep trying things. (It is amazing how much D spoils us; this 2 second complete rebuild from scratch feels soooo slow.)
Well, DConf was this week, but I only caught a couple hours of it due to technical difficulties on day one, timezone on day two, and personal life on day three, so I will have to write about that later.
D 2.086 came out last week. The big news this week though is that DConf is happening in London. It is supposed to be livestreamed and recorded, but I haven't heard any details as to where yet.
tsvutils update on forum, release candidate dmd, rant on website weight
A new dmd beta came out this week, along with DStep officially reaching version 1.0! Meanwhile, I have been fighting growing memory usage in my programs.
obj-c and webassembly report, tips on is expressions linked.
I'm going to have to be lazy this week, since I spent last Monday through Sunday night at various meetings that demanded my attention.
Thread with Andrei talking about changes, rvalue ref brought up again (this time by Andrei), tip on CTFE in -betterC, Adam works on web stuff more.
I forgot to post last week, so I slapped that post up without commentary, and now for this week, I write a little about a module that has been sitting in my repo for a long time, but hasn't been very useful. Now, it is minimally useful.
DConf schedule release. Otherwise, tbh, I forgot to write and post this week.
New LDC beta came out, DConf proposal deadline passes, old DIPs get status updates. Adam rants about responsive design.
Well, most my D work this week was playing with the Objective-C binding. I filed a few bugs and Jacob fixed them, but not all made it into the release. I am awaiting the point release to do more with it, but with the understanding I have of Obj-C now, I was able to get create window in simpledisplay working on Cocoa again.
More DIP talk in the forums, but I basically ignored all that and played with the new Objective-C interop and some runtime-less D code this week.
The new dmd beta came out this week, with lots of objective-C stuff, but I haven't had a chance to try it yet. Meanwhile, we got another LDC release, and in my world, I made some more progress on my new D web framework.
I got some work done on new web interface generation this week. A new dmd bug fix release came out, among many other community announcements, too.
I spent a huge amount of last week helping a friend do a last-minute move and dealing with a lot of snow... for the second week in a row! As I look outside now, the sun is out and we are back to a whopping 50 degrees Fahrenheit, so I don't wanna sit here typing on the computer for long.
GtkD blog, forum fundraiser, ref accept rvalue DIP argument, and more. Adam rants about libraries.
I was approached to write "Last Year in D" for the official blog, and spent much of my free time this week working on that. Upstream, I noticed a little more obj-c code merged, some talk about wrapping C++'s new operator for D as yet another memory management option, and there is a forum post (again) about expanding D to read zip files directly.
In the dmd land, the Objective-C binding keeps getting new stuff pulled, so that is progressing quickly right now, and in my world, I am writing new from-scratch reflection using dmd's new features.
I've had a crazy week with a lot of offline stuff and a lot of day job related work. So, alas, no time to write much for this issue, and I haven't finished the stuff I talked about last week :(
While the newsgroup raged about professionalism, a new DCD, DScanner, DServer, and other IDE helper tools came out, and I spent the week writing some new code in cgi.d - add-on servers. Also, TWID has its RSS feed live again!
Big announcement this week: DConf 2019 announced for May 8 - 11, 2019 in London. And I want to call out the thread on CTFE floating point printing - that is some hard code, so having a self-contained port that happens to be CTFEable is cool to keep in mind! Lastly, read on for statements-in-mixin-template tip!
After a year hiatus, This Week in D is back! However, this time, I want to do things a little differently: