Stefan (FlashOver) Pölz's Avatar

Stefan (FlashOver) Pölz

@flash0ver.bsky.social

Microsoft MVP JetBrains Community Contributor I C# .NET @ http://github.com/Flash0ver Live: @FlashOWare.bsky.social Speaking: http://sessionize.com/FlashOver

68 Followers  |  31 Following  |  21 Posts  |  Joined: 20.11.2024  |  2.292

Latest posts by flash0ver.bsky.social on Bluesky

2code ^ !2code [S2025E10] Benchmarking Compiler Extensions - Part 3
YouTube video by FlashOWare 2code ^ !2code [S2025E10] Benchmarking Compiler Extensions - Part 3

Even more Performance Measurement and Profiling of Roslyn Source-Generators included in Part 3 of Benchmarking Compiler Extensions.

- Wednesday, 2025-08-13
- 17:00 UTC

#dotnet #CSharp #Roslyn
#2codeOrNot2code

www.youtube.com/watch?v=8kpl...

13.08.2025 15:44 — 👍 2    🔁 1    💬 0    📌 0
2code ^ !2code [S2025E09] Benchmarking Compiler Extensions - Part 2
YouTube video by FlashOWare 2code ^ !2code [S2025E09] Benchmarking Compiler Extensions - Part 2

More Performance Measurement and Profiling of Roslyn Source-Generators upcoming in Part 2 of Benchmarking Compiler Extensions.

We moved the live-stream by one day,
to: Thursday, 2025-08-07
at the same time: 17:00 UTC

#dotnet #CSharp #Roslyn
#2codeOrNot2code

www.youtube.com/watch?v=pRLR...

06.08.2025 17:05 — 👍 2    🔁 2    💬 0    📌 0

‪@rlittlesii.bsky.social‬

We are now starting a series on #Benchmarking #Roslyn Compiler Extensions.

We begin with setting up the project and building a first prototype.

bsky.app/profile/flas...

23.07.2025 07:08 — 👍 1    🔁 0    💬 1    📌 0
2code ^ !2code [S2025E08] Benchmarking Compiler Extensions - Part 1
YouTube video by FlashOWare 2code ^ !2code [S2025E08] Benchmarking Compiler Extensions - Part 1

The (run)time has come!
We allocate this series to build a library that supports Benchmarking of #Roslyn Compiler Extensions, like #dotnet Analyzers and #CSharp Source-Generators.

2025-07-23 Wednesday
17:00 UTC

#2codeOrNot2code

www.youtube.com/watch?v=Rbu8...

23.07.2025 06:57 — 👍 1    🔁 1    💬 0    📌 1

Can't wait till Saturday.

10.07.2025 22:04 — 👍 0    🔁 0    💬 0    📌 0

We're building up to it:
Today, we will inspect, together with @kevingosse.net, what methods and calls really are

bsky.app/profile/flas...

and then - probably next episode - kick-start our journey of Tools for Roslyn Compiler Extensions; starting with Benchmarking.

We'll ping you when announced.

09.07.2025 07:22 — 👍 1    🔁 0    💬 0    📌 0
2code ^ !2code [S2025E07] .NET Method-ologies
YouTube video by FlashOWare 2code ^ !2code [S2025E07] .NET Method-ologies

Let's inspect "The hidden life of method calls" in #dotnet via #CSharp with @kevingosse.net.

Date: 2025-07-09 Wednesday
Time: 17:00 UTC

#2codeOrNot2code

www.youtube.com/watch?v=JhBI...

08.07.2025 06:48 — 👍 2    🔁 2    💬 1    📌 2
2code ^ !2code [S2025E06] The .NET Dispose Pattern
YouTube video by FlashOWare 2code ^ !2code [S2025E06] The .NET Dispose Pattern

We're back! After our "Tour de Talk", we continue our theme of #dotnet Memory Management and combine it with our session about Patterns from both #NDCOslo and #TechoramaBE 2025:
Let's dive deep into the #CSharp Dispose Pattern.

on Tuesday, 2025-06-24
at 17:00 UTC

www.youtube.com/watch?v=qRuG...

24.06.2025 05:15 — 👍 2    🔁 1    💬 1    📌 0

Not quite yet.
But we are about to get back into live-streaming next week, and will be building up towards Benchmarking of Roslyn Compiler Extensions.
I'll get back to you once we actively start that endeavour.

19.06.2025 22:46 — 👍 1    🔁 0    💬 1    📌 0

From what I read is that "Compiler-Extensions" is the official term used in (limited) documentation for Plugins that Roslyn-Hosts may load for compilations (Analyzers, Suppressors, Generators) and IDEs/Editors may interact with via Workspaces (Fixers, Refactorings, Completions).

17.06.2025 16:33 — 👍 1    🔁 0    💬 1    📌 0

Also ... so I think, I'm not positive though ... that, technically speaking, if your Extensions only use types that they are safe/meant to use, in accordance with the respective [Attribute], you should be fine putting all together in a single Assembly and it should work for the most common scenarios

17.06.2025 15:57 — 👍 1    🔁 0    💬 1    📌 0

...

Example:
Should you use a type from "Microsoft.CodeAnalysis.CSharp.Workspaces" in your Analyzer or Suppressor or Generator, but your Extension is loaded in a Build/Compilation-Scneario (only Editor-Scenarios usually require the Workspaces-APIs to be loaded), then your Extension might not work.

17.06.2025 08:40 — 👍 0    🔁 0    💬 1    📌 0

...
The reason for this guideline is that Roslyn is a Library which can be hosted by any tool, so the Extension-Author does not necessarily know under which environment the Compiler will run and whether, e.g., the Workspaces-Assembly is loaded or just "Microsoft.CodeAnalysis.CSharp/VisualBasic".
...

17.06.2025 08:32 — 👍 1    🔁 0    💬 1    📌 0

...

And for NuGet, you can pack them together in PackagePath="analyzers/dotnet/cs".

I usually have a separate CSPROJ that only represents the NuGet package and packs all netstandard2.0 libraries together.

...

17.06.2025 08:29 — 👍 1    🔁 0    💬 1    📌 0

I love/hate to say: It depends.

For maximum compatibility and safety, separate Roslyn-Extensions by Diagnostics-API (Analyzers + Suppressors + Generators) and Workspaces-API (Fixers + Refactorings), as well as separate Compiler-Extensions by Language (Common / CSharp / VisualBasic).

...

17.06.2025 08:27 — 👍 1    🔁 0    💬 1    📌 0

I never had matching T-shirts before 👕
I got mine from @updateconference.bsky.social #UpdateConference

11.04.2025 17:08 — 👍 1    🔁 0    💬 1    📌 0
2code ^ !2code [S2025E05] Pro .NET Memory Shenanigans
YouTube video by FlashOWare 2code ^ !2code [S2025E05] Pro .NET Memory Shenanigans

Pro .NET Memory Shenanigans:
In this April Fools' Day episode, @merelyeva.bsky.social and @flash0ver.bsky.social unveil some Memory-related inner workings of #dotnet with unsafe and unexpected #CSharp shenanigans.

2025-04-01 | 17:00 UTC (5 PM)
#2codeOrNot2code

www.youtube.com/watch?v=Xqdk...

31.03.2025 15:54 — 👍 1    🔁 1    💬 0    📌 0
2code ^ !2code [S2025E04] Pro .NET Memory Management
YouTube video by FlashOWare 2code ^ !2code [S2025E04] Pro .NET Memory Management

Pro .NET Memory Management

The co-authors of the 2nd edition - Konrad Kokosa, @chrisnas.bsky.social, @kevingosse.net - talk about the content and the book per se.
Join with your curiosity and your questions to the trio.

2025-03-25
18:00 UTC

#dotnet #CSharp #Memory

www.youtube.com/watch?v=DboS...

20.03.2025 07:10 — 👍 8    🔁 5    💬 0    📌 1
Post image

Good news for Late Birds:
Apply a 20 % discount for your @futuretechnl.bsky.social ticket, just in time.

- Future Tech 2025
@ Jaarbeurs Utrecht (the Netherlands)
on Thursday, March 13

Code: FutureTech_SDN20
Link: www.eventbrite.nl/e/938191274357/?discount=FutureTech_SDN20
until Monday, March 10

07.03.2025 14:08 — 👍 2    🔁 0    💬 0    📌 0
2code ^ !2code [S2025E03] Roslyn Diagnostics & CodeActions
YouTube video by FlashOWare 2code ^ !2code [S2025E03] Roslyn Diagnostics & CodeActions

Computer, run Diagnostics!
We build an Analyzer (reports Warnings) and a corresponding CodeFixer (provides CodeActions via Ctrl+. or Alt+Enter) for #CSharp code in #dotnet projects with #Roslyn.

2025-03-06 (Thursday)
18:00 (UTC)

www.youtube.com/watch?v=bRub...

06.03.2025 06:43 — 👍 3    🔁 1    💬 0    📌 0

I seem to never be too sure whether to ship a "ForAttributeWithMetadataName"-Generator with a Diagnostic+CodeFixer when the annotated type is not modified with `partial`, or to just generate the partial declaration anyway and let tooling offer the Refactoring to make to type partial via error CS0260

25.02.2025 00:43 — 👍 2    🔁 0    💬 1    📌 0
2code ^ !2code [S2025E02] Roslyn Code Analysis
YouTube video by FlashOWare 2code ^ !2code [S2025E02] Roslyn Code Analysis

Thursday I'm doing a live stream with @flash0ver.bsky.social and @merelyeva.bsky.social on all things Roslyn. Hope to see you there!

#dotnet #csharp

www.youtube.com/watch?v=t9PN...

24.02.2025 23:24 — 👍 3    🔁 2    💬 0    📌 0

I like the idea.
But the devil is in the detail: this only works for reference types that have the default constructor or a parameterless .ctor.

But I guess that's something a Diagnostic Analyzer on Attribute-annotated reference types + a CodeFix Provider could alleviate.

24.02.2025 18:06 — 👍 2    🔁 0    💬 1    📌 0

One thought I'd like to add is that if Thing, or the [ReferenceDefault]-annotated type, is not immutable, there now is a shared mutable instance, like the deprecated System.IO.Path.InvalidPathChars. Perhaps there could be an analyzer flagging non-readonly types, or generate a factory member instead.

24.02.2025 17:26 — 👍 1    🔁 0    💬 3    📌 0

Not that I can think of.
Such semantics could get quite tricky in a generic context, especially when unconstrained.
Off the top of my head, you may perhaps introduce an `I(Default)Creatable<T>` interface to your app or domain, and implement a `static abstract T Create(Default)` method on your types.

24.02.2025 17:14 — 👍 0    🔁 0    💬 0    📌 0
2code ^ !2code [S2025E02] Roslyn Code Analysis
YouTube video by FlashOWare 2code ^ !2code [S2025E02] Roslyn Code Analysis

Where do Diagnostics come from?
@jasonbock.net shows how to report warnings/errors in #dotnet CLI builds, display squiggly lines underneath your #CSharp code, and programmatically fix or suppress Diagnostics, all with #Roslyn.

2025-02-27 (Thursday)
18:00 UTC (6 PM)

www.youtube.com/watch?v=t9PN...

24.02.2025 15:54 — 👍 1    🔁 1    💬 0    📌 0

I missed that, unfortunately. I'll watch the recording tonight. Thanks!

24.02.2025 14:15 — 👍 1    🔁 0    💬 0    📌 0

Speaking a full hour about absolutely nothing at compile- and run-time is tight.
I am intrigued to hear more about that source generator, if it's not spoiling your talk.

22.02.2025 20:16 — 👍 1    🔁 0    💬 1    📌 0

There's also performance aspects to it:
Creating a string via a "SyntaxNode" or Tree, especially with normalized whitespaces, is significantly slower than via a "StringBuilder" or "IndentedTextWriter".
And I believe Generators take a string rather than nodes due to the immutability / incrementality.

17.02.2025 15:14 — 👍 2    🔁 0    💬 0    📌 0
2code ^ !2code [S2025E01] Incremental Source Generators
YouTube video by FlashOWare 2code ^ !2code [S2025E01] Incremental Source Generators

Thank you for your kind words, Eric. I'm glad this session was helpful for you.

Do you perhaps have (parts of) your use cases as open source? I'd love to take a look at your ideas!

By the way, we're also doing a live stream on Incremental Source Generators tonight:

www.youtube.com/watch?v=jbIw...

17.02.2025 14:48 — 👍 1    🔁 0    💬 1    📌 0

@flash0ver is following 20 prominent accounts