https://sites.google.com/view/dpc4-2026/
4th Data Prefetching Championship 2026
4th Data Prefetching Championship 2026
Migrating the Main Zig Repository from GitHub to Codeberg https://ziglang.org/news/migrating-from-github-to-codeberg/
Chips and Cheese
Evaluating Uniform Memory Access Mode on AMD's Turin ft. Verda (formerly DataCrunch.io)
#ChipAndCheese
Telegraph | source
(author: Chester Lam)
Evaluating Uniform Memory Access Mode on AMD's Turin ft. Verda (formerly DataCrunch.io)
#ChipAndCheese
Telegraph | source
(author: Chester Lam)
Harry Chen’s Blog
用于提供现代 PyPI 镜像的 NGINX 配置
Telegraph | source
(author: Shengqi Chen ([email protected]))
用于提供现代 PyPI 镜像的 NGINX 配置
Telegraph | source
(author: Shengqi Chen ([email protected]))
Zig Builds Are Getting Faster – Mitchell Hashimoto
https://mitchellh.com/writing/zig-builds-getting-faster
https://mitchellh.com/writing/zig-builds-getting-faster
Chips and Cheese
SC25: HACCing over 500 Petaflops on Frontier
#ChipAndCheese
Telegraph | source
(author: George Cozma)
SC25: HACCing over 500 Petaflops on Frontier
#ChipAndCheese
Telegraph | source
(author: George Cozma)
Chips and Cheese
Qualcomm’s Snapdragon X2 Elite
#ChipAndCheese
Telegraph | source
(author: George Cozma)
Qualcomm’s Snapdragon X2 Elite
#ChipAndCheese
Telegraph | source
(author: George Cozma)
Harry Chen’s Blog
在 Linux 上对 CPU 功耗进行带内测量与限制
Telegraph | source
(author: Shengqi Chen ([email protected]))
在 Linux 上对 CPU 功耗进行带内测量与限制
Telegraph | source
(author: Shengqi Chen ([email protected]))
Five Years of Apple Silicon: M1 to M5 Performance Comparison - MacRumors https://share.google/4VsFpfpjeuiZdWPYA
Daniel Lemire's blog
Automated Equality Checks in C++ with Reflection (C++26)
In C++, comparing two objects for equality is straightforward when they are simple types like integers or strings. But what about complex, nested structures? You may have to implement the comparison (
Consider a
To compare two
Without reflection, you would hae to write something ugly of the sort.
But this assumes
Instead, I wrote a small example that fully automates the process. You just add an operator overload.
The trick is that C++26 allows you to query a type’s members at compile time and iterate over them. The function
My complete implementation is less than a hundred lines of code, and it comes down to the following lines of code.
It relies on the reflection operator
The approach ensures zero runtime overhead, as all reflection, splicing, and looping are resolved during compilation. I posted a full demonstration.
source
Automated Equality Checks in C++ with Reflection (C++26)
In C++, comparing two objects for equality is straightforward when they are simple types like integers or strings. But what about complex, nested structures? You may have to implement the comparison (
operator==) manually for each class, which is error-prone and tedious.Consider a
person class.class person {
public:
person(std::string n, int a) : name(n), age(a) {}
private:
std::string name;
int age;
std::vector<hobby> hobbies;
std::optional<uint64_t> salary;
};
To compare two
person objects, we need to check if their names, ages, hobbies, and salaries match. Hobbies are a vector of hobby objects, each with a name. Salaries are optional. Manually writing operator== for this would involve checking each field, and if hobby changes, you would have to update it.Without reflection, you would hae to write something ugly of the sort.
bool operator==(const person& a, const person& b) {
return a.name == b.name && a.age == b.age && a.hobbies == b.hobbies && a.salary == b.salary;
}
But this assumes
hobby has operator==, and std::vector<hobby> has it only if hobby does. If hobby lacks ==, compilation fails. Moreover, for large classes, it becomes annoying.Instead, I wrote a small example that fully automates the process. You just add an operator overload.
bool operator==(const person& a, const person& b) {
return deep_equal::compare(a, b);
}
The trick is that C++26 allows you to query a type’s members at compile time and iterate over them. The function
std::meta::nonstatic_data_members_of, which gives us a list of members.My complete implementation is less than a hundred lines of code, and it comes down to the following lines of code.
bool compare_same(const T& a, const T& b) {
template for (constexpr auto mem : std::define_static_array(std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
if (!compare_same(a.[:mem:], b.[:mem:])) {
return false;
}
}
return true;
}
It relies on the reflection operator
^^T, which produces a std::meta::info value representing the type itself. Inside the function body, std::meta::nonstatic_data_members_of(^^T, ...) queries all non-static data members of T, returning a vector of reflection values in declaration order. The unchecked access context deliberately bypasses visibility rules, allowing comparison of private and protected members. This reflection vector is then wrapped in std::define_static_array, which materializes it into a static array, making it iterable in a compile-time loop. The template for loop iterates over each member reflection mem at compile time. For each, the splice expression a.[:mem:] directly accesses the corresponding member. The [: :] is more or less the inverse of the reflection operator (^^T): think of it as a going into a meta universe with ^^ and coming back into the standard C++ universe with [: :].The approach ensures zero runtime overhead, as all reflection, splicing, and looping are resolved during compilation. I posted a full demonstration.
source
Arch Linux: Recent news updates
waydroid >= 1.5.4-3 update may require manual intervention
The
As a result, the upgrade may conflict with the unowned files created in previous versions. If you encounter errors like the following during the update:
source
(author: George Hu)
waydroid >= 1.5.4-3 update may require manual intervention
The
waydroid package prior to version 1.5.4-2 (including aur/waydroid) creates Python byte-code files (.pyc) at runtime which were untracked by pacman. This issue has been fixed in 1.5.4-3, where byte-compiling these files is now done during the packaging process.As a result, the upgrade may conflict with the unowned files created in previous versions. If you encounter errors like the following during the update:
You can safely overwrite these files by running the following command:
error: failed to commit transaction (conflicting files)
waydroid: /usr/lib/waydroid/tools/__pycache__/__init__.cpython-313.pyc exists in filesystem
waydroid: /usr/lib/waydroid/tools/actions/__pycache__/__init__.cpython-313.pyc exists in filesystem
waydroid: /usr/lib/waydroid/tools/actions/__pycache__/app_manager.cpython-313.pyc exists in filesystem
pacman -Syu --overwrite /usr/lib/waydroid/tools/\*__pycache__/\*source
(author: George Hu)