- Your company needs Junior devs
- The KekulΓ© Problem - Nautilus
- Suckerpinch
- MiniJinja: Learnings from Building a Template Engine in Rust | Armin Ronacher's Thoughts and Writings
- Code review antipatterns
- September 08, 2024
-
π hyprwm/Hyprland v0.43.0 release
A new, big update 0.43.0 brought to you by Yours Truly.
Many bugfixes, and new features, as always.
Notes for packagers
- Hyprland now requires C++26 support to build. gcc>=14 or clang>=18 will be needed.
- Installable assets have moved to
assets/install/
. All pngs there should be installed to$PREFIX/share/hypr/
New features:
- IPC: Add config descriptions (#7377)
- animations: add workspace in/out configs
- config: Add a variable to prevent groups from merging after being dragged (#7650)
- config: Add a window rule to render while unfocused (#7582)
- config: Added default button mapping for xf86 keys (#7672)
- config: add exec-shutdown for running commands on shutdown (#7683)
- core: add option to control which window to focus on close (#7368)
- cursormgr: add a new setting to sync gsettings (#7253)
- env: Add HYPRLAND_NO_SD_VARS env condition (#7358)
- hyprctl: add active and all to switchxkblayout
- logs: Add file path to asset ERR log (#7336)
- windowrules: add fullscreenstate field (#7466)
- xwayland: add option to enable/disable xwayland (#7633)
Fixes:
- Fix crash reports having execute permission
- Fix missing include needed by clang
- build: Fix NO_XWAYLAND compilation (#7538)
- config: add missing header for libc++ after
92744b5
(#7403) - config: fix explicit sync option warning (#7293)
- config: fix uninitialized values with mode parsing
- core: fix crash on monitor removed with gammaControl (#7601)
- core: fix data race and a unsigned int rollover (#7278)
- cursormgr: fix cursor gsettings on session change (#7295)
- data-device: Fix selection mismatch when wlr resets primary selection (#7598)
- decorations: fix manual resize not recalculating decos (#7323)
- example/config: fix typo in default config (#7446)
- gamma-control: fix crash on monitor disconnect (#7353)
- helpers: fix: revert to signed arithmetic for cycling through workspaces (#7339)
- hyprpm: Fix checking dependencies (#7504)
- input: Fix disabling tap-to-click (#7304)
- input: Fix modifier keys getting stuck if depressed during config reload (#7486)
- install: Prepend ${DESTDIR} when creating hyprland symbolic link (fixes #7280). (#7281)
- keybinds: Fix fullscreenState toggling behaviour (#7288)
- keybinds: Fix syncFullscreen inconsistent with state when set by fullscreenState (#7343)
- keybinds: fixup misused kb state
- misc: fix some minor typos (#7530)
- pointermgr: fix initial cursorwarp (#7286)
- presentation-feedback: minor fixups
- protocol: fix logm template checks
- render: fixup format mismatch after leaving DS
- renderer: minor direct scanout fixes (#7594)
- screencopy: fix 10b format r/b flip
- screencopy: fixup 10-bit sharing via shm on nvidia
- sessionLock: fix misc:allow_session_lock_restore (#7511)
- textinput: fix ime activation in some edge cases (#7660)
- workspacerules: fix on-created-empty window focus (#7657)
Other:
- CI: clarify Nix CI jobs; disable on forked repositories
- CI: disable stale workflow on forks (#7535)
- CMake: drop duplicate -luuid after
5262292
- CMake: drop unused deps after
016da23
- CMakeLists: wayland.xml is in wayland-scanner pkgdatadir
- Nix: exclude wayland-scanner until next staging merge
- Nix: include xcursor regardless of xwayland
- Nix: remove unused dependencies
- README: Change image sources from vaxerski/Hyprland to hyprwm/Hyprland (#7315)
- Revert "syncobj: wait for deadline instead of available"
- Update aquamarine input in flake
- compositor: update suspendstate on window move (#7396)
- core: Include cstring whenever strncpy is used (#7267)
- core: Move to C++26 and use native_handle to CLOEXEC the debug fd (#7219)
- core: Preserve existing XDG_CURRENT_DESKTOP (#7347)
- core: make most for loops use const references (#7527)
- cursor: make inactive_timeout setting a float (#7268)
- data-device: send dndFinished when dnd offer is destroyed while unfinished
- eventloop: don't dispatch in enterLoop
- examples: more systemd examples (#7409)
- headers: set correct paths to header files (#7245)
- hyprctl: avoid parsing string::npos on invalid cmd (#7544)
- hyprpm, hyprctl: update shell completions
- hyprpm, hyprctl: remove Makefiles
- input: don't emit idle activity when calling simulateMouseMovement (#7649)
- input: kb focus mouse focused window if unset (#7666)
- input: move idle notify to input handlers (#7659)
- input: try to refocus a focusable window when seat grabs are reset (#7669)
- internal: introduce new types to avoid unsigned int rollover and signed int overflow (#7216)
- internal: removed Herobrine
- keybinds: refactor dispatchers to be better (#7331)
- keybinds: release mods after sendshortcut (#7581)
- layersurface: don't unref from monitor until dtor
- layersurface: dont rollover on size_t (#7451)
- layersurface: remove layer on destroy from monitor (#7457)
- linux-dmabuf: allow on split-node systems
- logs: don't get timezone every time logging (#7550)
- meson: explicitly specify path for find(1) (#7590)
- misc: Rename all instances of "emtpy" to "empty" (#7522)
- misc: constify the remaining for loops (#7534)
- monitor: avoid dangling references to old monitors being undestroyed
- monitors: avoid crash on wayland output removal
- output: dont cast enum out of range (#7448)
- protocols: avoid crashing in drmlease (#7290)
- protocols: destroy new xdgDialog protocol at right time (#7600)
- protocols: refactor protocol logging to a macro (#7324)
- renderbuffer: ensure framebuffer gets deleted (#7363)
- renderer: better lockscreen dead behavior (#7574)
- renderer: fade out windows on silent moves
- renderer: pass custom modelines to aq
- screencopy: nuke unused stuff
- sessionLock: ensure sls focus in some edge cases (#7647)
- shm: align size to stride (#7383)
- syncobj: wait for deadline instead of available
- textinput: don't deactivate ime if another ti is focused (#7617)
- textinput: send deactivate to ime on destory ti (#7614)
- window/xwayland: minor property cleanup
- window: don't focus on activate if window isn't mapped yet
- windows: support size with pseudo tiled
- xcursor: handle file errors when loading xcursor themes (#7326)
- xcursormgr: dont apply scale on gsettings (#7316)
- xdg-dialog: implement new protocol
- xwayland: deactivate xwayland focus if wayland is focused (#7458)
- xwayland: update overrideRedirect on map and configure (#7575)
- xwaylandmgr: minor refactor to activateSurface
- xwm: don't mark selection events as succeeded
- xwm: read atom name from xcb (#7546)
Special Thanks
Special thanks to these chads for donating, as always:
- Xoores
- taigrr
- SomeMediocreGamer
- Azelphur
- ari-cake
- alukortti
- MasterHowToLearn
- Theory_Lukas
- maltbeverage
- Plyply
- Poor as shit
- Milan
- johndoe42
- yyyyyyyan
- seb
- Cromat_tux
- DaGaugl
- Philipp Soldunov
- nico
- atomicptr
- ircurry
- normal
- Mikey G
- JPEG
- Sven
- neoney
- Valentin MATHIEU
- Morally2412
- Enzi
- Logno
- Mihail
- niraami
- KelpShake
MRs
- core: Move to C++26 and use native_handle to CLOEXEC the debug fd by @vaxerski in #7219
- type conversion to new types to avoid unsigned int rollover and signed int overflow by @gulafaran in #7216
- fix: set correct paths to header files by @matt1432 in #7245
- xcursmgr add a new setting to sync gsettings by @gulafaran in #7253
- Include cstring whenever strncpy is used by @earboxer in #7267
- cursor: make inactive_timeout setting a float by @wwaltb in #7268
- fix initial cursorwarp by @gulafaran in #7286
- Prepend ${DESTDIR} when creating hyprland symbolic link fixes #7280) by @yangyingchao in #7281
- fix explicit sync option warning by @ikalco in #7293
- fix data race and a unsigned int rollover by @gulafaran in #7278
- Fix fullscreenState toggling behaviour by @txkyel in #7288
- protocols avoid crashing in drmlease by @gulafaran in #7290
- fix cursor gsettings on session change by @ikalco in #7295
- readme: Change image sources from vaxerski/Hyprland to hyprwm/Hyprland by @PaddeCraft in #7315
- fix resizing by @MightyPlaza in #7323
- Add file path to asset ERR log by @davc0n in #7336
- handle file errors when loading xcursor themes by @ikalco in #7326
- helpers: fix: revert to signed arithmetic for cycling through workspaces by @ErynGalen in #7339
- Fix syncFullscreen inconsistent with state when set by fullscreenState by @txkyel in #7343
- gamma-control: fix crash on monitor disconnect by @PaideiaDilemma in #7353
- Preserve existing XDG_CURRENT_DESKTOP by @Vladimir-csp in #7347
- protocols refactor protocol logging to a macro by @gulafaran in #7324
- Add HYPRLAND_NO_SD_VARS env condition by @Vladimir-csp in #7358
- renderbuffer ensure framebuffer gets deleted by @gulafaran in #7363
- xcursormgr dont apply scale on gsettings by @gulafaran in #7316
- Add config descriptions by @vaxerski in #7377
- Update aquamarine input in flake by @leiserfg in #7382
- Fix disabling tap-to-click by @sliedes in #7304
- shm align size to stride by @gulafaran in #7383
- compositor: update suspendstate on window move by @gulafaran in #7396
- flake: update aquamarine by @diniamo in #7395
- hyprpm, hyprctl: update shell completions by @LOSEARDES77 in #7399
- Unbreak build with libc++ by @jbeich in #7403
- feat: more systemd examples by @JL2210 in #7409
- Fix typo by @arash28134 in #7446
- feat: add a config to control which window to focus on when closing window by @ParaN3xus in #7368
- dont cast enum out of range by @gulafaran in #7448
- fix: static asan patch by @JL2210 in #7439
- dont rollover in layersurface by @gulafaran in #7451
- CMakeLists: wayland.xml is in wayland-scanner pkgdatadir by @flokli in #7467
- Fix crash reports having execute permission by @Redender64 in #7469
- layersurface remove expired layers on arranging by @gulafaran in #7457
- Fix modifier keys getting stuck if depressed during config reload by @MahouShoujoMivutilde in #7486
- windowrules: add fullscreenstate field by @sungyoonc in #7466
- refactor dispatchers to be beetter by @ikalco in #7331
- hyprpm: Fix checking dependencies by @ntnn in #7504
- xwayland: deactivate xwayland focus if wayland is focused by @Trimutex in #7458
- sessionLock: fix misc:allow_session_lock_restore by @PaideiaDilemma in #7511
- Rename all instances of "emtpy" to "empty" by @adharmic in #7522
- build: fix 32bit builds by @gulafaran in #7510
- make most for loops use const references by @gulafaran in #7527
- fix some minor typos by @gulafaran in #7530
- constify the remaining for loops by @gulafaran in #7534
- CI: disable stale workflow on forks by @NotAShelf in #7535
- Fix missing include needed by clang by @GreatGameGal in #7490
- Fix NO_XWAYLAND build by @gekola in #7538
- hyprctl: avoid parsing string::npos on invalid cmd by @gulafaran in #7544
- don't get timezone every time logging, its expensive cause cpp dum by @ikalco in #7550
- nix(flake): update aquamarine by @diniamo in #7540
- ensure buffer format on commit by @ikalco in #7556
- renderer: better lockscreen dead behavior by @vaxerski in #7574
- xwayland: update overrideRedirect on map and configure by @Trimutex in #7575
- keybinds: release mods after sendshortcut by @darkwater in #7581
- Add a window rule to render while unfocused by @vaxerski in #7582
- meson: unbreak build with BSD find(1) by @jbeich in #7590
- fix direct scanout by @ikalco in #7594
- CI: clarify Nix CI jobs; disable on forked repositories by @NotAShelf in #7595
- fixes crash on Hyprland exit by @ikalco in #7600
- Fixed selection mismatch during 'wlr reset primary selection'. by @TheMical in #7598
- fix crash on monitor removed with gammaControl by @ikalco in #7601
- xwm: read atom name from xcb by @gulafaran in #7546
- textinput: send deactivate to ime on destory ti by @sungyoonc in #7614
- textinput: don't deactivate ime if another ti is focused by @sungyoonc in #7617
- CMake: drop unused dependencies (a la Meson) by @jbeich in #7626
- input: don't emit idle activity when calling simulateMouseMovement by @PaideiaDilemma in #7649
- sessionLock: ensure sls focus in some edge cases by @PaideiaDilemma in #7647
- config: add option to enable/disable xwayland by @Trimutex in #7633
- config: Add a variable to prevent groups from merging after being dragged by @Sonotsugipaa in #7650
- textinput: fix ime activation in some edge cases by @sungyoonc in #7660
- workspacerules: fix on-created-empty window focus by @sungyoonc in #7657
- input: move idle notify to input handlers by @PaideiaDilemma in #7659
- input: kb focus mouse focused window if unset by @outfoxxed in #7666
- input: try to refocus a focusable window when seat grabs are reset by @outfoxxed in #7669
- Added default button mapping for laptop multimedia keys for volume an⦠by @DarthChillash in #7672
- config: add exec-shutdown for running commands on shutdown by @Trimutex in #7683
New Contributors
- @matt1432 made their first contribution in #7245
- @wwaltb made their first contribution in #7268
- @txkyel made their first contribution in #7288
- @PaddeCraft made their first contribution in #7315
- @davc0n made their first contribution in #7336
- @ErynGalen made their first contribution in #7339
- @Vladimir-csp made their first contribution in #7347
- @leiserfg made their first contribution in #7382
- @JL2210 made their first contribution in #7409
- @arash28134 made their first contribution in #7446
- @ParaN3xus made their first contribution in #7368
- @flokli made their first contribution in #7467
- @Redender64 made their first contribution in #7469
- @ntnn made their first contribution in #7504
- @adharmic made their first contribution in #7522
- @GreatGameGal made their first contribution in #7490
- @gekola made their first contribution in #7538
- @TheMical made their first contribution in #7598
- @Sonotsugipaa made their first contribution in #7650
- @DarthChillash made their first contribution in #7672
Full Changelog :
v0.42.0...v0.43.0
-
- September 07, 2024
-
π Register Spill Joy & Curiosity #6 rss
I'm going to try something new again. This Register Spill consists of only the Joy & Curiosity section. Why? I want some writing time back for other side-projects, but I also think the writing might get better of it's not on a weekly schedule. I've also really enjoyed compiling a list of links, so let's focus on that for a while.
-
Somehow I ended up reading about Apple's Presto machines: machines that can update iPhones while they're still in the box. This again is an easy-to-miss sentence that only makes you pause when you really think about it. How do you update iPhones in boxes , while they're not even turned on? I found some more information here -- fascinating stuff.
-
This post by Tim O'Reilly (of animals-on-the-covers O'Reilly books) made the rounds this week and I re-read it -- again. It's one of the realest things I've ever read on building a company, a business. O'Reilly: "One of my big mistakes was to let people build products, or do marketing, without forcing them to understand the financial impact of their decisions. This is flying blind -- like turning them loose in an automobile without a speedometer or a fuel gauge." While reading, keep in mind that this is from 2013! Pre-ZIRP, if you will. And yet.
-
I'm going to reference this tweet in the future when someone asks whether it's worth learning or understanding something that one might not use in their day-to-day: "knowing about architecture means buildings are legible in a different way; knowing about plants and birds makes hikes more stimulating, playing music makes listening to it richer, etc"
-
Thanks to this Pragmatic Engineer post I re-read Joel Spolky's Things You Should Never Do - Part 1, the classic post in which he argues that one should never do a big rewrite. It's been a while since I last read it. This time, the following section jumped out at me: "Programmers are, in their hearts, architects, and the first thing they want to do when they get to a site is to bulldoze the place flat and build something grand. We're not excited by incremental renovation: tinkering, improving, planting flower beds." My immediate reaction was: but I love incremental renovation and tinkering and improving and tweaking and fiddling and listening to the engine!
-
Paul Graham published a new essay. It's called Founder Mode and I enjoyed it. What I found interesting: it seems to be yet another sign that the tide is shifting, that the previous 10 years are coming to a close. And every time I think about that tide, I wonder whether it will also take away the idea that it's worthwhile to emulate Google, even if you don't have a money fountain in your company.
-
Kent Beck published something in response to the Graham essay and that too is an interesting read. What stuck with me was something orthogonal to his main point, a small side-observation really. Beck writes about decisions by CEOs: "Each decision has 2 outputs. (1) The consequences of the decision itself. (2) A new organization more or less prepared to make the next decision." -- how interesting is that (2) point? What a lens to look through!
-
I was talking to a younger colleague this week about stock options and forwarded him the all-time classic about stock options by Julia Evans. I also realized that (1) I know quite a lot about stock options compared to, say, 5 years ago and (2) I bet that the single most-helpful thing I ever read on business and stock options was Phil Knight's memoir Shoe Dog.
-
Last week I was talking to Dave and I got lucky because we both realized Dave didn't know about the Qlobe: a quine (a program that prints itself) that prints itself as a globe and each time you run it (and thus print it) it rotates the globe. My recommendation to you: clone it from here, run it in the terminal, smile.
As always and as we both know, you should subscribe here:
-
-
π astral-sh/uv 0.4.7 release
Release Notes
Enhancements
- Add
--no-emit-project
and friends touv export
(#7110) - Add
--output-file
touv export
(#7109) - Prune unused source distributions from the cache in
uv cache prune
(#7112) - Take intersection of constraint and requirements hashes (#7108)
Performance
- Skip metadata fetch for
--no-deps
andpip sync
(#7127)
Bug fixes
- Avoid panicking when encountering an invalid Python version during
uv python list
(#7131) - Write trailing newline to
.python-version
files (#7140)
Install uv 0.4.7
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.4.7/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/uv/releases/download/0.4.7/uv-installer.ps1 | iex"
Download uv 0.4.7
File | Platform | Checksum
---|---|---
uv-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum
uv-x86_64-apple-darwin.tar.gz | Intel macOS | checksum
uv-i686-pc-windows-msvc.zip | x86 Windows | checksum
uv-x86_64-pc-windows-msvc.zip | x64 Windows | checksum
uv-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum
uv-i686-unknown-linux-gnu.tar.gz | x86 Linux | checksum
uv-powerpc64-unknown-linux-gnu.tar.gz | PPC64 Linux | checksum
uv-powerpc64le-unknown-linux-gnu.tar.gz | PPC64LE Linux | checksum
uv-s390x-unknown-linux-gnu.tar.gz | S390x Linux | checksum
uv-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum
uv-armv7-unknown-linux-gnueabihf.tar.gz | ARMv7 Linux | checksum
uv-aarch64-unknown-linux-musl.tar.gz | ARM64 MUSL Linux | checksum
uv-i686-unknown-linux-musl.tar.gz | x86 MUSL Linux | checksum
uv-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Linux | checksum
uv-arm-unknown-linux-musleabihf.tar.gz | ARMv6 MUSL Linux (Hardfloat) | checksum
uv-armv7-unknown-linux-musleabihf.tar.gz | ARMv7 MUSL Linux | checksum - Add
-
- September 06, 2024
-
π @cxiao@infosec.exchange I have made an update to this thread about Rust panic location metadata in mastodon
I have made an update to this thread about Rust panic location metadata in binaries, as well as to the associated blog post! I made a correction to my description of how developers can strip the panic location metadata from their binaries.
The attached screenshot shows a binary that was built using the Rust compiler's unstable
location-detail
feature, which excludes panic location metadata from the final binary.Even using this feature isn't enough to strip all the location metadata, though; by default, Rust binaries statically link in a precompiled version of the standard library, which still contains the location metadata. Therefore, this binary was also built using Cargo's unstable
build-std
feature, which builds the Rust standard library from source, now with thelocation- detail
flag specified during the compilation.See the updated Rust binaries without panic metadata section of my blog post, for more details!
-
π News Minimalist US, UK, and EU finalize AI treaty + 3 more stories rss
Today ChatGPT read 10051 top news stories. After removing previously covered events, there are 4 articles with a significance score over 5.8.
[5.9] U.S. imposes export curbs on quantum and chip technologies to China βjapantimes.co.jp
The U.S. Department of Commerce has announced new export controls on technologies like quantum computing and semiconductors, citing national security concerns as China advances in the chip industry.
The rules, effective globally, include exemptions for countries with similar controls. Chinaβs semiconductor technology is reportedly just three years behind Taiwan's, prompting concerns over economic impacts and compliance from allies like South Korea and the Netherlands.
[5.8] US, UK, and EU to sign AI standards treaty βFinancial Times[$]
The US, UK, and EU are set to sign a legally binding international treaty on AI, emphasizing human rights and democratic values.
Drafted over two years by over 50 countries, the convention mandates accountability for harmful AI outcomes and ensures legal recourse for victims. The treaty opens for signatures on September 5, 2024, amid growing global efforts to regulate AI technologies.
[5.8] UN calls for independent force to protect Sudanese civilians βABC News
UN-backed human rights investigators have called for the establishment of an "independent and impartial force" to protect civilians in Sudan, where conflict has displaced over 10 million people and resulted in at least 18,760 deaths since April last year.
The report blames both the Sudanese army and the paramilitary Rapid Support Forces for war crimes, urging an arms embargo across the entire country amid widespread humanitarian crises.
[5.8] Scientists urge international cooperation to regulate lunar resources βSpace.com
Scientists, led by lunar expert Clive Neal, are advocating for an International Lunar Resources Prospecting Campaign to evaluate the lunar south pole's resources, particularly water ice, crucial for life support and rocket fuel.
Over 30 robotic lunar missions are planned by the decade's end, with participation from multiple nations. This collaboration aims to understand the moon's resources, coordinating data among various agencies, including NASA, China, and Russia.
Highly covered news with significance over 5.3
[5.7] First 100,000 doses of mpox vaccine reach Democratic Republic of Congo
(Irish Examiner + 19)[5.6] China pledges $51 billion and 1 million jobs for Africa
(nbcnews.com + 74)[5.3] AI startup Safe Superintelligence raises $1 billion in funding
(cnbc.com + 11)Want to read more?
See additional news on newsminimalist.com
Thanks for reading and see you soon,
Vadim
-
π @trailofbits@infosec.exchange Jason An, a summer intern, upgraded Pwndbg with Binary Ninja integration and mastodon
Jason An, a summer intern, upgraded Pwndbg with Binary Ninja integration and Go structure dumping, bringing an IDE-like experience to stripped binary analysis.
https://buff.ly/3Xvcgwy -
π @HexRaysSA@infosec.exchange Are you ready? We're revealing some of the exciting new features in IDA 9.0, mastodon
Are you ready? We're revealing some of the exciting new features in IDA 9.0, launching on September 30th! π First up: C++ Exceptions Support in the Decompiler. Learn why this feature is a game-changer π https://hex- rays.com/blog/unveiling-ida-pro-9-0-c-exceptions-support-in-the- decompiler/?utm_source=Social-Media- Post&utm_medium=Mastodon&utm_campaign=revealing-ida-9-0-try- catch
-
π Jeremy Fielding (YouTube) How Regenerative Braking Works rss
-
π matklad Try to Fix It One Level Deeper rss
Try to Fix It One Level Deeper Sep 6, 2024
I had a productive day today! I did many different and unrelated things, but they all had the same unifying theme:
There's a bug! And it is sort-of obvious how to fix it. But if you don't laser-focus on that, and try to perceive the surrounding context, it turns out that the bug is valuable, and it is pointing in the direction of a bigger related problem. So, instead of fixing the bug directly, a detour is warranted to close off the avenue for a class of bugs.
Here are the examples!
In the morning, my colleague pointed out that we are giving substandard error message for a pretty stressful situation when the database runs out of disk space. I went ahead and added appropriate log messages to make it clearer. But then I stopped for a moment and noticed that the problem is bigger -- we are missing an infrastructure for fatal errors, and
NoSpaceLeft
is just one of a kind. So I went ahead and added that along the way: #2289.Then, I was reviewing a PR by
@martinconic
which was fixing some typos, and noticed that it was also changing the formatting of our Go code. The latter is by far the biggest problem, as it is the sign that we somehow are not runninggofmt
during our CI, which I fixed in #2287.Then, there was a PR from yesterday, where we again had a not quite right log message. The cause was a confusion between two compile-time configuration parameters, which were close, but not quite identical. So, instead of fixing the error message I went ahead and made the two parameters exactly the same. But then my colleague noticed that I actually failed to fix it one level deeper in this case! Turns out, it is possible to remove this compile-time parametrization altogether, which I did in #2292.
But these all were randomly-generated side quests. My intended story line for today was to refactor the piece of code I had trouble explaining (and understanding!) on yesterday's episode of Iron Beetle. To get into the groove, I decided to first refactor the code that calls the problematic piece of logic, as I noticed a couple of minor stylistic problems there. Of course, when doing that, I discovered that we have a bit of dead code, which luckily doesn't affect correctness, but does obscure the logic. While fixing that, I used one of my favorite Zig patterns:
defer assert(postcondition);
It of course failed in the simulator in a way postcondition checks tend to fail -- there was an unintended reentrancy in the code. So I slacked my colleague something like
I thought myself to be so clever adding this assert, but now it fails and I have to fix it TT I think I'll just go and
.next_tick
the prefetch path. It feels like there should be a more elegant solution here, but I am not seeing it.But of course I can't just "go and
.next_tick
it", so here I am, trying to figure out how to encode a Duff's device in Zig pre-#8220, so as to make this class of issues much less likely. -
π Kagi We moved mountains (of cotton) to deliver on our promise rss
Dear Kagi Community, Remember those t-shirts we promised ( https://blog.kagi.com/celebrating-20k ) ? Well, hold onto your search bars, because theyβre finally ready to ship! TL;DR: Kagi Store ( https://store.kagi.com ).
( https://store.kagi.com ) And letβs just say, the journey to get here was a bit more of an βadventureβ than we originally planned.
-