Skip to content

Instantly share code, notes, and snippets.

View richlander's full-sized avatar

Rich Lander richlander

View GitHub Profile
@richlander
richlander / slice4-review.md
Created July 2, 2026 20:57
Adversarial review — value-typed emission slice 4 (fix/issue-2145-invariant-hardening): BLOCKING EnumOverUnderlyingFamily regression

Adversarial review — value-typed emission slice 4 (fix/issue-2145-invariant-hardening)

Verdict: BLOCKING — do not merge as-is. The slice-4 importer join-typing opener (EnumOverUnderlyingFamily) is unsound: it changes program semantics and marks the result Full fidelity.

Reviewers: GPT-5.5 and Gemini 3.1 Pro (both non-Claude per the AGENTS.md roster), each in an isolated worktree. They independently found the same root cause via different fixtures. All findings below were reproduced by the requester on clean base vs branch checkouts using DecompilerHarness --dump.

@richlander
richlander / dotnet-inspect-decompiler-review.md
Created June 20, 2026 11:32
dotnet-inspect decompiler review

dotnet-inspect decompiler review

Summary

ILInspector.Decompiler is not yet close to ILSpy-level state of the art as a general-purpose .NET decompiler. It is much closer to state of the art in observability, verification discipline, and product fit for an inspection CLI.

The core design is coherent: typed IR, an explicit ordered pass list, honest degradation, stage dumps that end on the shipped renderer, and compile-back

@richlander
richlander / README-clean-gist.md
Created April 14, 2026 23:42
Clean .NET release verification report

.NET Release Verification Report

  • Date: 2026-04-14
  • Tool: release-notes 1.0.1
  • Command: dotnet run --project src/Dotnet.Release.Tools -- verify releases /Users/rich/git/core/release-notes --skip-hash
  • Exit code: 2

Summary

| Version | Latest release | URLs checked | CDN mismatches | aka.ms mismatches | Result |

@richlander
richlander / README.md
Last active April 14, 2026 22:48
Latest .NET release verification report (2026-04-14)

.NET Release Verification Report

  • Date: 2026-04-14
  • Tool: local Dotnet.Release.Tools build from ~/git/dotnet-release
  • Command: dotnet run --project src/Dotnet.Release.Tools -- verify releases /Users/rich/git/core/release-notes --skip-hash
  • Exit code: 2

Outcome

The updated verifier no longer reports false SDK feature-band failures for .NET 9.0 and .NET 8.0. The remaining issues are limited to unresolved .NET 11.0 preview aka.ms redirects and .NET 10.0 CDN/aka.ms drift.

@richlander
richlander / post.md
Created March 20, 2023 00:28
.NET Container images: `whoami`

.NET Container images: whoami

We have had two relevant practices for the container images we publish:

  • Don't change the user.
  • Don't add users.

You can see that with our .NET 7 container images.

@richlander
richlander / proposal.md
Last active March 13, 2023 21:11
Updating our build

Updating .NET Linux Build

.NET Core started out life as a cross-platform project. We naturally wanted to encourage usage on Linux. Across the first couple versions, we figured out how to build a single set of binaries that worked everywhere (e.g. for Linux x64). A key design point of that project was building on an old Linux so that our choice of build OS didn’t unnecessarily limit where .NET apps could be run. That has worked well, using CentOS 7, but it will soon go out of support. There isn't an obvious replacement for CentOS 7, requiring us to adopt a new approach.

We intend to use a combination of Mariner and a streamlined copy of Ubuntu going forward.

Breadth Targeting

The primary aspect of breadth targeting on Linux is linking with the C standard library (libc). Native code (like the .NET runtime) is compiled with a given libc and then is only able to run on distros with a libc version at le

@richlander
richlander / dotnet8-container-demo.md
Last active February 23, 2023 02:57
.NET Container Demo

Playing with .NET 8 Containers

We just shipped a cool new scenario for .NET, which is making it really easy to run .NET 8 container images as a non-root user.

Friends don't let friends run as root

We should all get T-Shirts that say that.

Let's take a quick look using our favourite aspnetapp sample. I'm going to use WSL. I'll show you everthing I do. I use the patterns that are easiest for me, which might not be the same for you.

@richlander
richlander / Dockerfile
Last active November 4, 2023 07:08
Dockerfile built-in ARGs
FROM alpine
ARG TARGETPLATFORM
ARG TARGETOS
ARG TARGETARCH
ARG TARGETVARIANT
ARG BUILDPLATFORM
ARG BUILDOS
ARG BUILDARCH
ARG BUILDVARIANT
@richlander
richlander / Program.cs
Created October 12, 2021 15:33
const interpolated string example
const string Bar = "Bar";
const string DoubleBar = $"{Bar}_{Bar}";
WriteLine(DoubleBar);