I got a Mac and made some solid progress on actually using it in the arsd libs. Some history and future.
I had a bunch of stuff to talk about, but got busy with other things. Maybe next week.
Some thoughts about cgi.d future optimizations with api and allocator design, some brief commentary on some snakes, and a long exploration of reggae.
Last week was the DConf 2023 in London. I didn't go (and I'm glad I didn't), but I have reports from the youtube.
I plan to tag 11.1 next week. Also got a new chair and rearranging my desk, but no commentary on that at this time. Too soon to say.
Tagged arsd v11.0.1 to fix a minor regression bug in a specific cgi.d configuration that slipped past me, but otherwise no time to write.
No time to write this week.
Despite being behind on features, I decided it is good enough to tag the release anyway to get dub caught back up to git. Some details below.
An update on a bunch of little things.
I did some small code things this week but not enough to write about.
I'll be on a DLF meeting this week. I plan on bringing up static ctor cycles, docker request, and LTS.
There was an announcement from Walter about changing the deprecation process, but I didn't have time to write more.
I finally have a little bit of time available this morning to write a blog in between sick me, sick kid, day job, and everything else. A critique on Symmetry Autumn of Code proposals.
I got sick this week, so again, nothing.
No time to write again.
No time to write again.
The DConf deadline has gone past with a good number of talk submissions for the Aug 29-Sep 1 event. The selected speakers will be announced in another week.
Mike Parker made an announcement post that mentioned the term "IVY" last week that set off some threads. He followed up in a beerconf call over the weekend and I talked to him myself too.
Another week, another auto-generated report with no additional commentary.
Another busy week, sorry, no extra content.
A user on the chatroom announced that he will accept entries for a game jam. If I can find the time in between the hundred other things I have to do, I might slap together a short playable demo of my rpg. Some thoughts on it below.
Missed another week. Sorry, been busy with other work.
Busy week again with non-code stuff. Sorry.
Work kept me busy again.
I copy/pasted a post from the forum into the blog for this week about how guis and games work differently. This post is based on some thoughts I had about why arsd.game uses part of, but is not a part of, simpledisplay.
Is that a flamebait headline? Better click to find out.
Just the stats.
The work-in-progress new arsd.core module has been formally added to git master. Still a lot of work to do, but some concepts finally becoming code.
Some more things that might be helpful about using gdb on linux, especially for segfaults.
Another week dominated by day job and some arsd 11 work, no time to write. Will try to update next week.
I got behind on things again so just doing the auto-generated stats here.
See community announcements for Mike's post, also Steve did a blog on attribute inference debugging. I write on static assert porting patterns here.
Tip of the week about how to define toString and some preview about new dub features.
Object.factory might be on its way out. What are some alternatives for its users?
Qonquest and WildCAD announced on the newsgroup, and Qonquest uses my simpledisplay.d and WildCAD uses X with some custom widgets, so both kinda cool to look at.
I've been saying for a few years now that fullyQualifiedName is a useless strawman. As it is being enshrined in the language as a new trait this week, it is apropos to go over this again. I also touch about alias in error messages.
Here, I write a bit about ui generators I actually have for batch programs, and some concepts that would be nice to explore for more interactive programs.
The textlayouter is in a new module, so that will be a minigui build process breaking change. Also moving forward slowly with the arsd.core module since the next tag may be 11.0, gonna try to batch as many of these little breaks together as possible.
I was busy with other work and didn't have time to write the blog this week.
I wrote at some length in a chatroom about mixin and since I'm behind schedule I'm gonna be lazy and link it here.
Right after the DConf Online weekend, I have a brief write up, and some of the design on my new text layout class after a history lesson on why version one and two of that haven't worked out.
Not much else to say rn.
This week got very busy with unrelated things, so just a quick thought after the stats.
A while ago, I wrote up a proposal to improve the maintainer's side of the DIP process. More recently, I wrote up some thoughts on how to improve the user side of it, which is here following the stats.
Lots of announcements this week, including revamped dub docs, Hipreme's game library, and the first new dmd release for months - which includes the first practically usable version of ImportC (though I remain critical, this is a major milestone), and a new DIP, but all announcements that risked being overshadowed by a single thread and its aftermath.
The big thing this week is explaining library version mismatches, a radical idea of a linker-driven compiler, and a more likely to happen proposal to fix problems inherent to D's current build paradigm.
Blocks of GC memory for types without pointers don't add to gc pause times. A chat lecture turned into a blog post after the stats.
I sketch out some thoughts on how D could easily and efficiently add write barriers to enable more GC strategies without affecting other code, analogizing them to bounds checks.
I am unifying some of the simpledisplay font interfaces and wrote some random thoughts while doing it.
I've been filling in some missing docs in the older arsd files lately. Otherwise, not much to say this week.
I write some explanation and brief update to the D Wiki AVR article.
Never got around to writing blog this week.
First issue with wontfix bug report and tip of the week about bypassing IFTI
Sick week, so just the stats.
A misconception from DConf led to a thread on the forum about what it means to simplify D, and I separately wrote up some thoughts on how bitfields ought to work.
I never got around to finishing the post for this week, so just stats.
I wrote up some ideas on event loop things over the weekend.
Release notes for arsd 10.9 below.
What if we could define @nogc, pure, and even things like @vibe_fiber_safe in library code instead of compiler additions? Discussion to follow.
Some thoughts on dconf after I finally caught up on the youtubes.
DConf is this week, so nothing to say about it until after it happens (though I'll be doing some comments on the chat rooms, likely after the fact given the timezone shift and other business - i still have to work!), but i'll show an experimental exception concept I've been playing with again.
cgi.d's dispatcher system can turn normal-looking D functions into websites. But what about database mutations?
Did you know you can static import object; and suppress the automatic implicit import? Let's play with it!
A lot of people ask for more inferred attributes - safe, nogc, etc. I have some thoughts.
A brief write up about how I want to be respected in discussions.
I'll briefly write up an idea I had for a marginal exception performance improvement migration path and why it probably won't work, though some of the individual items in the way should probably be fixed anyway.
I wrote up the key ideas behind my proposal to improve the D Improvement Proposal structure.
Busy week making both a work deadline and a little web application for a charity stream this weekend so no time to write... again.
Another wrote-nothing week. Have two things that need to be done soon and there's a lot of work to do for them.
Links to dconf 2022 info. Brief thoughts on next arsd releases.
Been busy with a (non-D) work project this week.
Following up from last week, I will write about another problem importC has that I haven't seen other people discuss.
ImportC was released one year ago today. Let's take a look at where it is now and how it compares to the alternatives.
A have some thoughts on philosophy of language design.
A little more thought on dub 2.0 concepts.
I'll write a few thoughts on async io.
Nothing except the stats again.
I've done a little bit of work on my D browser, but most the week has been spent fixing bugs and doing work meetings, but I'll link to something I wrote about X below.
In this post, I outline some ideas I have about a potential dub 2.0 to fix some problems with dub 1.0.
I know I haven't written for a long time, but here's a short post finally.
Another week, another lack of writing...
Another week flew by with no time to write. Biggest D thing was changing the index on dpldocs.info to focus entirely on name. Should be much faster now.
The building my sister was living in burned down! Another wild occurrence keeping my attention away from blogging. Will try to write next week.
Been busy trying to finish a work project that's a little behind schedule, so no time to write.
I tried to reindex the dpldocs database today. I still don't like it but it is a bit better than it was last week.
Library names should be descriptive and arbitrary.
Brief thoughts on naming variables and functions today.
Tip of the week from Snarwin on discord.
Lots of work bugs to fix, so I'll write a little about a lesson.
Tip of the week on alias members and this.
I spent much of last week writing more support code and implementing a player/editor application to hack custom music in to the old Final Fantasy 1 game.
Got busy with this week, more info next week!
A few updates on cgi.d's hybrid server coming to Windows and other arsd things, but mostly I'll talk about std.socket and what I'd like to see from it in a hypothetical v2. Spoilers: it isn't what most the proposals describe.
A lot of little things since last update, some info below.
No time to blog again, alas.
gdc upstream now uses the D version of the compiler allowing closer version sync. On schedule to fully sync in gdc 12!
Been almost a whole two months since 10.3 and a lot of things are coming together.
My dconf livestream to finish the ronaroids game from last time is here: https://www.youtube.com/watch?v=XuYcZPYWbKk
arsd.webview revived, new web demo will have to wait. Also made adrdox public imports list integrated with other members.
Several things: importC first use, web, database, gui updates in arsd, phobos2 might happen, dual context tip of the week.
adrdox gets arcz support to make more of dpldocs.info server space.
I wrote a malloc and free finally! Some talk on assumeSafeAppend and webasm drawing.
Terminal password read function, dchar.init musings, tracking email rant, tip on struct ctor that checks all values present.
idl2d on dub, more leadership talk
dmd as a cross compiler in beta, ldc shared druntime improved, arsd 10.3 tagged.
I was going to write about minigui grid, but instead a discussion came up that looked like a codegen bug and I had to help with the investigation.
See the community announcements for several new things and see below for some discussion on my new font improvement: you can load system ttfs into opengl usage libraries now.
My rant today isn't exactly on topic for D, but it is a response I've been wanting to write for a while: using Firefox does nothing to address Google's power. Mozilla won't save the web.
The week flew by again. Sorry.
Last week, I wrote some speculative thoughts on error handling ideas and hinted that I had ideas improve today's things as well. Today, I'll go into some ideas for better exceptions and better error codes in D.
Walter tweeted that exception handling was a mistake. I don't agree. But I also don't think D's exceptions are as good as they could be.
Another week where I just didn't have time to write things up. My ideas list is getting long though lol.
Again, no time to write this week.
I added a qrcode module and wish we had a tuple of arguments in all functions, not just variadics.
I never got around to writing blog content this week.
Last week, a contributor said "goodbye" in a PR comment. My thoughts on the underlying problem.
I tagged arsd 10.2 this week, not much in it though.
just docs: arsd 10.1, thought on virtual functions, community announces light weight Druntime 0.3 among others
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.
I added a list font method to OperatingSystemFont and alpha blending support to the Sprite class in simpledisplay, and I did something I've been meaning to do for a while: start to redesign minigui's event system.
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.
arsd 9.0 out with some arsd.http2 changes and the ttf OperatingSystemFont thing in arsd.simpledisplay, among other things. I also write about how searching is a good skill, but it shouldn't discourage us from asking colleagues.
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: