musings on hybrid CT/RT tests, some more progress on new web framework
Posted 2019-06-03
Blog
Articles- terminal.d gets clipboard functions, ldc 1.20 out.
- DConf keynote speaker announced: Lua architect Roberto Ierusalimschy, Named args DIP discussed
- February 3, 2020
- Adam's terminal suite explained
- Understanding mixin templates, terminal.d improvements
- My attribute-by-default proposal. Also dmd 2.090 came out.
- DConf 2020 announced: June 17-20 in London. @safe by default debated. Adam did: Android, JNI, WebSocket in arsd libs
- tar.xz, --DRT tip, dom bug fixes, more Android and JNI, link to old phobos docs
- LDC 1.19 - Android, AVR. My rant on tests, update on JNI and COM.
- Walter's string interpolation proposal is OK but not great. My Android thing nearing beta release. dub downtime explained.
- Android project update, introduction to arsd.jni
- New pattern about interface contracts
- Adam shares Windows console secrets - DO NOT USE chcp!!
- Adam's rant on benchmarks
- Socket tutorial
- November 4, 2019
- October 28, 2019
- arsd package updates, forum nonsense
- Update on Android
- Adam does iOS "goodbye world"
- September 30, 2019
- D turns 20, Adam rants on software freedom
- Named arg DIPs and my thoughts on code organization
- September 9, 2019
- I wrote about mixin templates vs string mixins on Stack Overflow
- August 26, 2019
- Bug bounty in D again - my hot take, on reusing code, a fun picture, my tentative plan for the next month
- Time invested is worth a lot
- cgi.d's new scheduler, static this tricks
- July 29, 2019
- July 22, 2019
- Solving vs managing problems
- A big week in the arsd repo
- July 1, 2019
- June 24, 2019
- June 17, 2019
- CRTP thoughts, named arguments DIP review, DConf videos now on youtube
- musings on hybrid CT/RT tests, some more progress on new web framework
- a little more webassembly
- May 20, 2019
- Adam's string interpolation proposal
- DMD 2.086 live, GCC 9 with D support formally released, DConf coming soon, links to posts on builder pattern and disallowing implicit conversions with templates, and 2d array op overloads
- template constraint error improvements coming?
- dmd 2.086 beta, dstep 1.0 released, Adam works on memory usage
- obj-c and webassembly report, tips on is expressions linked.
- new ldc, new dmd, dpp on the blog
- D's future discussed in forums
- LDC beta, DConf blog link, Adam introduces gamehelpers.d
- March 18, 2019
- LDC 1.15.0-beta1, responsive design rant
- dmd 2.085.0 released
- Obj-C interop and D without druntime code to copy/paste
- dmd beta, more info coming next time, demo of new web framework initial prototype
- automatic web interface discussion, reflection tips and tricks
- Adam busy with weather and a move, lots of community announcements
- January 28, 2019
- Working on official blog 2018 retro, C++ new wrapped, dmd reading zips?
- dmd obj-c growing, Adam static foreaches an interface to RPC
- dmd 2.084, hope for future, but busy non-D week for me
- IDE tools released, my cgi.d gets new features
- DConf announced, tip, Adam rants: mouse trap
- This Week in D is back!
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.
Core D Development Statistics
In the community
Community announcements
See more at the announce forum.
Tip of the Week
Ever since Andrei Alexandrescu mentioned considering unittests as being an extension to compiler semantic checking, I have been getting increasingly excited about the potential for hybrid compile-time/run-time tests.
With normal compile time checks, you need all the data to be together in one expression. You might pass things to helper functions from different parts of the program, but it all ultimately needs to make its way down to just one expression to actually static assert on.
But, what if you have two fairly isolated components that nevertheless need to test together? Well, that's where you can do the hybrid tests: gather information at compile time, generate static constructors to bridge the gap from there so you can test it at runtime. Static constructors or unittests can assert on tables made in other modules at compile time.
I am just starting to explore this, and I suggest you do too. Talk about it on the forums or email me (destructionator@gmail.com) if you find anything cool with it!
What Adam is working on
I am always bouncing around projects, so sometimes many months go by before I am able to continue something. I finally just improved the new cgi.d dispatcher, after been wanting to do that for the better part of this year.
I wanted to make that url dispatcher work entirely off CTFE data, but I also wanted a presenter object passed to it. This has to be fully templated to use all the CT data, and it took me forever to think of my plan... but I think I finally have it.
dispatcher is now a IFTI template nested inside a variadic template, and you can pass your own presenter to it. Everything inside is then templated on that, and pass types to this item, specifically, as necessary to figure things out.
When you define your own item, you need to match the signature and provide fallback templates.
(You don't actually have to inherit, and it doesn't help too much in getting the signature right, but meh.)
This will let us centralize various policies for the application.
Still a long ways to go, but most progress I have made here for a little while.