Topics /

Software Engineering

The most popular blog posts about software engineering on Hacker News. 1,535 posts.

2024
1086

Error Stacking in Rust

How to handle and report errors effectively in Rust applications is a common question. This blog shares our experience organizing variant types of Error in a complex system like GreptimeDB, from how an error is defined to how to log the error or present it to end-users. Such a system is composed of multiple components…

1087

Async2 – The .NET Runtime Async experiment concludes

The .NET team has been working on a new experiment called async2, which is a new implementation of the async/await pattern that is designed to be more efficient and more flexible than the current implementation. It started with green threads and ended with an experiment that moves async and await to the runtime. This…

1089

Into CPS, Never to Return

CPS, or continuation-passing style, is an intermediate representation for programs, particularly functional programs. It’s used in compilers for languages such as SML and Scheme. Much of its utility comes from its support for tail calls and nonlocal control flow such as call/cc, but it can also be used as an…

1095

What would it take to add refinement types to Rust?

A few years ago, on a whim, I wrote YAIOUOM. YAOIOUM was a static analyzer for Rust that checked that the code was using units of measures correctly, e.g. a distance in meters is not a distance in centimeters, dividing meters by seconds gave you a value in m / s (aka m * s^-1). YAIOUOM was an example of a refinement…

1097

Code Models

Code reflection, an enhancement to Java reflection, enables access to symbolic representations of Java code in method and lambda expressions. “Symbolic representations of Java code” may seem like a fancy term, but its easily demystified. It’s a model of Java code where the code of a method or lambda expressions is…

1107

SaberVM

This post announces SaberVM, an abstract machine for functional programs that guarantees safety, reliability, and portability.