$ the-wire · showcase
Spark 4.0 lands in .NET bindings, arcade refreshes Entra tokens mid-job
By RepoJournal · Filed · About .NET · Composed from the cited sources · methodology
The .NET Spark bindings grew Spark 4.0 routing for both Structured Streaming and Avro, while Arcade fixed a token-expiry bug that broke long publishing jobs; elsewhere the day was dependency bumps and a one-line cleanup fix.
Add Spark 4.0 Structured Streaming support dotnet/spark
Spark 4 relocated PythonForeachWriter to a new package while keeping its constructor signature, so the PR routes the JVM class name to python.streaming.PythonForeachWriter on 4.0.x and leaves the Spark 3 path untouched. Streaming tests now run across the Spark 4.0.0 to 4.0.4 Windows and Linux CI matrix, covering Foreach lifecycle, ForeachBatch failure and recovery, query cleanup, and same-versi...
Add Spark 4.0 Avro support dotnet/spark
All four existing FromAvro and ToAvro overloads are now enabled on Spark 4.0.x by reusing the same JVM Avro functions and bridge, with no changes to public APIs, Scala code, or worker protocols. New end-to-end coverage exercises round-trip values, schema evolution, null and empty inputs, and malformed data.
Dynamically refresh Entra tokens in publishing HTTP clients dotnet/arcade
PublishArtifactsInManifestBase and AzureDevOpsNugetFeedAssetPublisher acquired their Entra ID bearer token once at HttpClient construction, and because Entra access tokens live 30 to 60 minutes, downloads and feed queries in long-running jobs such as Maestro Build Promotion failed with 401 Unauthorized once the token expired. Clients now refresh tokens dynamically instead of relying on a value ...
Fix the inverted reparse point filter in the netstandard2.0 cleanup path dotnet/BenchmarkDotNet
FileCleanupHelper's netstandard2.0 enumeration filtered on (x.Attributes & FileAttributes.ReparsePoint) != 0, keeping only symlinks and junctions, the inverse of the AttributesToSkip = FileAttributes.ReparsePoint the other branch passes. On a .NET Framework host that skipped every regular file, so the recursive Delete threw into TryExecute's empty catch and the work directory survived, meaning ...
chore: Modify csproj-based project build logics dotnet/BenchmarkDotNet
The csproj build path gets a reworked autogenerated project template adding OutputPath and custom props/targets, plus a net8 SDK minimum, and DllGatherer logic is slated for removal. The rest of the wire is Maestro dependency flow: arcade build 20260911.5 for F# and the 20260914.1 train for arcade itself, alongside source updates flowing from dotnet/dotnet, and csproj and test-discovery houseke...