# Exception

An event during program execution that disrupts the normal flow of a program's instructions and can be handled by exception-handling code.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Gson Deserialization and the InaccessibleObjectException

DevFeed: [Gson Deserialization and the InaccessibleObjectException](<https://devfeed.tech/articles/gson-deserialization-and-the-inaccessibleobjectexception-26583.md>)

Original publisher: [Read original article](<https://www.baeldung.com/java-gson-deserialization-inaccessibleobjectexception>)

Author: Marcin Buczkowski

Published: 2026-09-15T05:32:46Z

Content type: tutorial

Language: en

Sources: [Baeldung](<https://devfeed.tech/sources/baeldung.md>)

Topics: [Exception](<https://devfeed.tech/topics/exception.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Tutorial](<https://devfeed.tech/topics/tutorial.md>), [Java](<https://devfeed.tech/topics/java.md>)

Tags: [exception](<https://devfeed.tech/tags/exception.md>), [gson](<https://devfeed.tech/tags/gson.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [java](<https://devfeed.tech/tags/java.md>), [json](<https://devfeed.tech/tags/json.md>), [json-gson](<https://devfeed.tech/tags/json-gson.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

This tutorial explains how Java's strong encapsulation and the Java Platform Module System can cause InaccessibleObjectException when Gson deserializes JSON through reflection. It focuses on modular projects, date handling, and Gson's maintenance status.

### Source excerpt

Learn how to resolve an InaccessibleObjectException when working with Gson and modern Java versions. The post Gson Deserialization and the InaccessibleObjectException first appeared on Baeldung.

## Resolving Exception: Cannot Deserialize From Object Value (No Delegate- Or Property-Based Creator)

DevFeed: [Resolving Exception: Cannot Deserialize From Object Value (No Delegate- Or Property-Based Creator)](<https://devfeed.tech/articles/resolving-exception-cannot-deserialize-from-object-value-no-delegate-or-property-based-creator-17378.md>)

Original publisher: [Read original article](<https://www.baeldung.com/java-jackson-fix-no-creator-exception>)

Author: Martin Blažević

Published: 2026-09-14T04:21:09Z

Content type: tutorial

Language: en

Sources: [Baeldung](<https://devfeed.tech/sources/baeldung.md>)

Topics: [Jackson, Java Dates, Exception, LocalDate](<https://devfeed.tech/topics/jackson-java-dates-exception-localdate.md>), [Jackson](<https://devfeed.tech/topics/jackson.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [JSON](<https://devfeed.tech/topics/json.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [exception](<https://devfeed.tech/tags/exception.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [jackson](<https://devfeed.tech/tags/jackson.md>), [jackson-exception](<https://devfeed.tech/tags/jackson-exception.md>), [java](<https://devfeed.tech/tags/java.md>), [json](<https://devfeed.tech/tags/json.md>), [library](<https://devfeed.tech/tags/library.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

This tutorial explains why Jackson can throw InvalidDefinitionException when it cannot determine how to construct an object during JSON deserialization. It demonstrates the problem with an immutable class and presents solutions including a no-argument constructor, property-based creators using @JsonCreator and @JsonProperty, and annotated factory methods. It also notes the correct annotation package for Jackson 3.x.

### Source excerpt

During JSON deserialization, Jackson may throw an InvalidDefinitionException when it can't determine how to create an instance of the target class. In this article, you'll learn how to fix this in Jackson 2.x and 3.x. The post Resolving Exception: Cannot Deserialize From Object Value (No Delegate- Or Property-Based Creator) first appeared on Baeldung.

## Quiz: The subprocess Module: Wrapping Programs With Python

DevFeed: [Quiz: The subprocess Module: Wrapping Programs With Python](<https://devfeed.tech/articles/quiz-the-subprocess-module-wrapping-programs-with-python-4407.md>)

Original publisher: [Read original article](<https://realpython.com/quizzes/python-subprocess/>)

Author: Real Python

Published: 2026-09-11T12:00:00Z

Content type: article

Language: en

Sources: [Real Python](<https://devfeed.tech/sources/real-python.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Processes](<https://devfeed.tech/topics/processes.md>), [Streams](<https://devfeed.tech/topics/streams.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Exception](<https://devfeed.tech/topics/exception.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [exception](<https://devfeed.tech/tags/exception.md>), [processes](<https://devfeed.tech/tags/processes.md>), [python](<https://devfeed.tech/tags/python.md>), [streams](<https://devfeed.tech/tags/streams.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

An interactive 13-question quiz testing understanding of Python's subprocess module, including launching external programs, handling exit codes and failures, preventing hangs with timeouts, and working with standard streams.

### Source excerpt

Test your understanding of Python's subprocess module. Run shell commands, handle exit codes and timeouts, and work with standard streams.

## Why is the x86 undefined instruction called ud2? Why 2?

DevFeed: [Why is the x86 undefined instruction called ud2? Why 2?](<https://devfeed.tech/articles/why-is-the-x86-undefined-instruction-called-ud2-why-2-21760.md>)

Original publisher: [Read original article](<https://devblogs.microsoft.com/oldnewthing/20260910-00/?p=112689>)

Author: Raymond Chen

Published: 2026-09-10T14:00:00Z

Content type: article

Language: en

Sources: [Raymond Chen](<https://devfeed.tech/sources/raymond-chen.md>)

Topics: [x86](<https://devfeed.tech/topics/x86.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [intel](<https://devfeed.tech/topics/intel.md>)

Tags: [compiler](<https://devfeed.tech/tags/compiler.md>), [exception](<https://devfeed.tech/tags/exception.md>), [intel](<https://devfeed.tech/tags/intel.md>), [old-new-thing](<https://devfeed.tech/tags/old-new-thing.md>), [other](<https://devfeed.tech/tags/other.md>), [processor](<https://devfeed.tech/tags/processor.md>), [x86](<https://devfeed.tech/tags/x86.md>)

### AI overview

The article explains why the x86 undefined instruction is called ud2. It describes how software used byte sequences that reliably raised an invalid opcode exception, how Intel later provided a standardized instruction, and how compiler output can use it to mark unreachable code and cause a deliberate crash.

### Source excerpt

It came after ud0 and ud1. The post Why is the x86 undefined instruction called <CODE>ud2</CODE>? Why 2? appeared first on The Old New Thing.

## Quiz: Understanding the Python Traceback

DevFeed: [Quiz: Understanding the Python Traceback](<https://devfeed.tech/articles/quiz-understanding-the-python-traceback-4409.md>)

Original publisher: [Read original article](<https://realpython.com/quizzes/python-traceback/>)

Author: Real Python

Published: 2026-09-06T12:00:00Z

Content type: article

Language: en

Sources: [Real Python](<https://devfeed.tech/sources/real-python.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [log management](<https://devfeed.tech/topics/log-management.md>)

Tags: [examples](<https://devfeed.tech/tags/examples.md>), [exception](<https://devfeed.tech/tags/exception.md>), [logging](<https://devfeed.tech/tags/logging.md>), [python](<https://devfeed.tech/tags/python.md>)

### AI overview

An interactive 12-question quiz that tests understanding of Python tracebacks, including how to read them from the bottom up, interpret their parts, recognize common exceptions, and log tracebacks while handling exceptions.

### Source excerpt

Check your understanding of Python tracebacks. Practice reading the error message line, recognizing common exceptions, and logging a traceback.

## Standardizing Exception Message Style in Ruby

DevFeed: [Standardizing Exception Message Style in Ruby](<https://devfeed.tech/articles/standardizing-exception-message-style-in-ruby-20535.md>)

Original publisher: [Read original article](<https://code.dblock.org/2026/09/05/standardizing-exception-message-style-in-ruby.html>)

Author: Daniel Doubrovkine (dblock@dblock.org)

Published: 2026-09-05T00:00:00Z

Content type: article

Language: en

Sources: [Daniel Doubrovkine](<https://devfeed.tech/sources/daniel-doubrovkine.md>)

Topics: [Ruby](<https://devfeed.tech/topics/ruby.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [ci](<https://devfeed.tech/topics/ci.md>)

Tags: [ci](<https://devfeed.tech/tags/ci.md>), [exception](<https://devfeed.tech/tags/exception.md>), [exceptions](<https://devfeed.tech/tags/exceptions.md>), [grape](<https://devfeed.tech/tags/grape.md>), [lint](<https://devfeed.tech/tags/lint.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [standard](<https://devfeed.tech/tags/standard.md>)

### AI overview

The article explains a convention for Ruby exception messages: they should generally begin with lowercase and omit trailing punctuation because they follow the exception class name and a colon. It describes fixing seven inconsistent sites in Grape, documenting the convention, and releasing the rubocop-exception_messages RuboCop plugin to enforce casing and punctuation, with additional checks for redundant class names and interpolation markers.

### Source excerpt

While reviewing dozens of PRs from ericproulx optimizing Grape's internals recently, I noticed that the bare raise ArgumentError, "..." calls scattered across the codebase were inconsistent: some messages were capitalized, some ended in a period, most were not. Longtime readers know where this is going. Ruby's own core and standard library exceptions don't do this - TypeError: no implicit conversion from nil to integer, ArgumentError: wrong number of arguments, and so on all read lowercase and unpunctuated, because the message is meant to be read after the exception class name and a colon, not as a standalone sentence. Grape's own Grape::Exceptions::* classes already follow this convention. The bare raise ArgumentError, "..." calls in dsl/entity.rb, dsl/inside_route.rb, dsl/validations.rb, and validations/types/dry_type_coercer.rb didn't, so I fixed those seven sites and documented the convention in CONTRIBUTING.md, in #2909. To avoid regressions, I wrote rubocop-exception_messages, a RuboCop plugin gem with two cops: ExceptionMessages/Casing flags (and autocorrects) messages that don't start with a lowercase letter. ExceptionMessages/Punctuation flags (and autocorrects) messages with a trailing period, with an exception for a literal ellipsis ("still processing.."), which is stylistic rather than a sentence ending. Both cops recognize raise Class, "message" and raise Class.new("message") forms, and handle interpolated (dstr) messages by only checking the literal string segments (the first segment for casing, the last for punctuation), since interpolated values in the middle are out of the cop's control. # bad raise ArgumentError, 'Missing required option.' # good raise ArgumentError, 'missing required option' The gem ships as a modern RuboCop plugin (via lint_roller), so it's a one-line addition to a consuming project's .rubocop.yml: plugins: - rubocop-exception_messages rubocop-exception_messages 0.2.0 is out now, and I've added it back to Grape's own Gemfile and

## Exception Handling in Practice

DevFeed: [Exception Handling in Practice](<https://devfeed.tech/articles/exception-handling-in-practice-18192.md>)

Original publisher: [Read original article](<https://newsletter.francofernando.com/p/exception-handling-in-practice>)

Author: Franco Fernando

Published: 2026-08-28T05:50:28Z

Content type: tutorial

Language: en

Sources: [The Polymathic Engineer](<https://devfeed.tech/sources/the-polymathic-engineer.md>)

Topics: [Exception](<https://devfeed.tech/topics/exception.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [exception](<https://devfeed.tech/tags/exception.md>), [exception-handling](<https://devfeed.tech/tags/exception-handling.md>), [patterns](<https://devfeed.tech/tags/patterns.md>)

### AI overview

An article about patterns and anti-patterns for signaling, catching, and surviving failures in code.

### Source excerpt

Patterns and anti-patterns for signaling, catching, and surviving failures in your code.

## A C++ Exception Handler Retries Without Releasing Deadlock Resources

DevFeed: [A C++ Exception Handler Retries Without Releasing Deadlock Resources](<https://devfeed.tech/articles/codesod-lock-em-dead-28511.md>)

Original publisher: [Read original article](<https://thedailywtf.com/articles/lock-em-dead>)

Author: Remy Porter

Published: 2026-08-26T06:30:00Z

Content type: opinion

Language: en

Sources: [The Daily WTF](<https://devfeed.tech/sources/the-daily-wtf.md>)

Topics: [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Deadlock](<https://devfeed.tech/topics/deadlock.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>)

Tags: [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [code](<https://devfeed.tech/tags/code.md>), [codesod](<https://devfeed.tech/tags/codesod.md>), [deadlock](<https://devfeed.tech/tags/deadlock.md>), [exception](<https://devfeed.tech/tags/exception.md>)

### AI overview

The article examines a C++ exception handler that retries after detecting a deadlock. It explains that the retry mechanism appears to jump back to the start of the block without releasing resources, so it can leave the deadlock unresolved and potentially add more deadlocks.

### Source excerpt

Kevin sends us an exception handler from C++. Let's see if we can spot what's going wrong: catch (Exception::Deadlock) { retry; } When we catch a deadlock happening, we retry. That's not a keyword in C++, and looking at how it's used, it has to be some kind of macro, and I suspect that the macro is hiding a goto underneath it. The real problem, though, is that we suspect we're in a deadlock situation. That means this thread is waiting on a resource held by another thread which is waiting for a resource held by this thread. Neither train may continue until the other has passed. So this retry only works if it releases the resource held by this thread (letting the deadlocking thread proceed). But does it? Not according ot Kevin. The code already had a pile of deadlocks in it, so they brought in a highly paid consultant to try and fix them by reordering access and tracing where mutexes were causing issues. This retry just jumps back up to the top of the block, without releasing any resources. It "seems the consultant wanted to add some deadlocks of their own," Kevin says. [Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!

## How to Fix Jackson JSON Parse Error Can not construct instance of java.time.LocalDate

DevFeed: [How to Fix Jackson JSON Parse Error Can not construct instance of java.time.LocalDate](<https://devfeed.tech/articles/how-to-fix-jackson-json-parse-error-can-not-construct-instance-of-java-time-localdate-4494.md>)

Original publisher: [Read original article](<https://www.baeldung.com/java-fix-jackson-json-parse-error>)

Author: Hiks Gerganov

Published: 2026-08-22T23:26:23Z

Content type: tutorial

Language: en

Sources: [Baeldung](<https://devfeed.tech/sources/baeldung.md>)

Topics: [Jackson, Java Dates, Exception, LocalDate](<https://devfeed.tech/topics/jackson-java-dates-exception-localdate.md>), [LocalDate](<https://devfeed.tech/topics/localdate.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [ISO 8601](<https://devfeed.tech/topics/iso-8601.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [errors](<https://devfeed.tech/tags/errors.md>), [exception](<https://devfeed.tech/tags/exception.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [jackson](<https://devfeed.tech/tags/jackson.md>), [jackson-java-dates-exception-localdate](<https://devfeed.tech/tags/jackson-java-dates-exception-localdate.md>), [java](<https://devfeed.tech/tags/java.md>), [java-dates](<https://devfeed.tech/tags/java-dates.md>), [json](<https://devfeed.tech/tags/json.md>), [learn](<https://devfeed.tech/tags/learn.md>), [localdate](<https://devfeed.tech/tags/localdate.md>), [post](<https://devfeed.tech/tags/post.md>), [time](<https://devfeed.tech/tags/time.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

This tutorial explains why Jackson may fail to deserialize JSON date values into Java's LocalDate or LocalDateTime, even when the JSON uses ISO-8601 formatting. It examines Jackson version support, missing Java Time module configuration, unsupported date formats, and mismatched date-time types, then presents ways to address the problem.

### Source excerpt

Learn why sometimes Jackson can't construct an instance of LocalDate or LocalDateTime and how to fix the error it throws. The post How to Fix Jackson JSON Parse Error Can not construct instance of java.time.LocalDate first appeared on Baeldung.

## Signatures, be true: domain errors and functional handling in Kotlin

DevFeed: [Signatures, be true: domain errors and functional handling in Kotlin](<https://devfeed.tech/articles/signatures-be-true-domain-errors-and-functional-handling-in-kotlin-8792.md>)

Original publisher: [Read original article](<https://blog.jetbrains.com/kotlin/2026/08/signatures-be-true-domain-errors-and-functional-handling-in-kotlin/>)

Author: Alina Dolgikh

Published: 2026-08-19T15:52:05Z

Content type: article

Language: en

Sources: [Kotlin : A concise multiplatform language developed by JetBrains | The JetBrains Blog](<https://devfeed.tech/sources/kotlin-a-concise-multiplatform-language-developed-by-jetbrains-the-jetbrains-blog.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Code](<https://devfeed.tech/topics/code.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [API](<https://devfeed.tech/topics/api.md>), [Database](<https://devfeed.tech/topics/database.md>), [engineering-culture](<https://devfeed.tech/topics/engineering-culture.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [article](<https://devfeed.tech/tags/article.md>), [backend](<https://devfeed.tech/tags/backend.md>), [code](<https://devfeed.tech/tags/code.md>), [database](<https://devfeed.tech/tags/database.md>), [engineering-culture](<https://devfeed.tech/tags/engineering-culture.md>), [exception](<https://devfeed.tech/tags/exception.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>)

### AI overview

An article about making expected domain failures explicit in Kotlin function signatures through sealed types and functional error handling. It argues that business-logic failures should be visible in the function signature, API contract, and client handling code rather than hidden in implementations or exception handlers.

### Source excerpt

Here's a function that signs a document: In Kotlin, Unit means the function completes without returning a meaningful value - roughly equivalent to void in Java. Got it? Now, tell me what could go wrong. You can't. Yet, the code might be invalid. The signing window might have closed. The database might be down. The [...]

## \`exit()\` may silently break your parallel tests

DevFeed: [\`exit()\` may silently break your parallel tests](<https://devfeed.tech/articles/exit-may-silently-break-your-parallel-tests-33291.md>)

Original publisher: [Read original article](<https://freek.dev/3177-exit-may-silently-break-your-parallel-tests>)

Author: Freek Van der Herten (freek@spatie.be)

Published: 2026-08-12T10:30:31Z

Content type: tutorial

Language: en

Sources: [freek.dev - all blogposts](<https://devfeed.tech/sources/freek-dev-all-blogposts.md>)

Topics: [PHPUnit](<https://devfeed.tech/topics/phpunit.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [Processes](<https://devfeed.tech/topics/processes.md>)

Tags: [best-practices](<https://devfeed.tech/tags/best-practices.md>), [crash](<https://devfeed.tech/tags/crash.md>), [diagnostics](<https://devfeed.tech/tags/diagnostics.md>), [exception](<https://devfeed.tech/tags/exception.md>), [parallel](<https://devfeed.tech/tags/parallel.md>), [php](<https://devfeed.tech/tags/php.md>), [phpunit](<https://devfeed.tech/tags/phpunit.md>), [process](<https://devfeed.tech/tags/process.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

The article explains that calling exit() can cause parallel PHPUnit test workers to crash without useful diagnostics because the process ends outside PHPUnit's control. It recommends throwing an exception instead so the failure is reported with a stack trace.

### Source excerpt

Michael explains why exit() can make parallel test workers crash without useful diagnostics, and why verbose flags do not help when the process dies outside PHPUnit's control. The fix is simple: throw an exception instead, so the failure is reported normally with a stack trace. Read more

## Proper logging in PHP with PSR-3

DevFeed: [Proper logging in PHP with PSR-3](<https://devfeed.tech/articles/proper-logging-in-php-with-psr-3-21144.md>)

Original publisher: [Read original article](<https://ocramius.github.io/blog/php-logging-with-psr-3/>)

Published: 2026-07-28T00:00:00Z

Content type: article

Language: en

Sources: [Marco Pivetta](<https://devfeed.tech/sources/marco-pivetta.md>)

Topics: [PHP](<https://devfeed.tech/topics/php.md>), [Logging](<https://devfeed.tech/topics/logging.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [log management](<https://devfeed.tech/topics/log-management.md>), [Monitoring](<https://devfeed.tech/topics/monitoring.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [code](<https://devfeed.tech/tags/code.md>), [errors](<https://devfeed.tech/tags/errors.md>), [exception](<https://devfeed.tech/tags/exception.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [logging](<https://devfeed.tech/tags/logging.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>), [php](<https://devfeed.tech/tags/php.md>)

### AI overview

This article explains practical PHP logging with PSR-3. It focuses on passing exceptions through the logger context, allowing the logger to render exception details, defining exception types for business-specific failures, and logging enough information to understand software behavior in production. It also warns that logging and exceptions can impose CPU, memory, and I/O overhead.

### Source excerpt

Who is this article for? This post is for people that do day-by-day busywork coding, and for team leads that want to direct their peers towards better logging practices. Note that this article comes from my regular need to present these exact points to different people, multiple times a year, in multiple teams, in multiple companies. Also, we will not talk about how to configure a PSR-3 logger, but rather how to use one. Handling errors properly Error/exception handling is the main use-case for logging. When logging exceptions, please pass the Throwable instance to the 'exception' context key. try { // logic here } catch (SomeException $failed) { $this->logger->error('Something went wrong', [ 'exception' => $failed, ]); } Avoid cluttering the logger call with data deriving from the exception: it's not the logger call-site's job, and you are just repeating work. I often see unnecessary code like: try { // logic here } catch (SomeException $failed) { $this->logger->error('Something went wrong', [ // first mistake: we forgot 'exception' 'previous' => $failed->getPrevious(), // let the logger do this! 'line' => $failed->getLine(), // already part of the stack trace 'error' => $failed->getMessage(), // also always rendered 'error_type' => $failed::class, // done by the logger, usually ]); } The logger itself must instead be configured (and usually already is configured) to render: the exception ::class the exception message and code (codes are not really relevant any more, in this century) the stack trace previous exceptions additional exception fields Your responsibility is to instead pass context information that the logger can't infer on its own. What if my code fails gracefully, and does not raise an exception? if (is_wrong($something)) { $this->logger->warn('Something went wrong', ['something' => $something]); } For business-specific failures that deserve a type, we can upcast them to a Throwable anyway: if (is_wrong($something)) { $this->logger->warn('Something wen

## Practical Kotlin Multiplatform: Implementing the Firebase Sign-up Operation with Ktor

DevFeed: [Practical Kotlin Multiplatform: Implementing the Firebase Sign-up Operation with Ktor](<https://devfeed.tech/articles/practical-kotlin-multiplatform-implementing-the-firebase-sign-up-operation-with-ktor-25189.md>)

Original publisher: [Read original article](<https://joebirch.co/android/practical-kotlin-multiplatform-implementing-the-firebase-sign-up-operation-with-ktor/>)

Author: hitherejoe

Published: 2026-07-26T07:37:53Z

Content type: tutorial

Language: en

Sources: [Joe Birch](<https://devfeed.tech/sources/joe-birch.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Firebase](<https://devfeed.tech/topics/firebase.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Android](<https://devfeed.tech/topics/android.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Exception](<https://devfeed.tech/topics/exception.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [code](<https://devfeed.tech/tags/code.md>), [exception](<https://devfeed.tech/tags/exception.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [ios](<https://devfeed.tech/tags/ios.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>)

### AI overview

A tutorial on implementing a Firebase sign-up API request in a Kotlin Multiplatform application using Ktor. It defines an authentication repository interface and service implementation for Android and iOS clients, including API key, email, and password parameters and exception handling.

### Source excerpt

This post is part four of a series adapted from Practical KMP, my book on building production Kotlin Multiplatform apps for Android and iOS. Part two built the authentication remote store and modelled its response. Implementing the Sign-up Endpoint Now that we've created the models for receiving back an authentication response, it's time for us... Continue reading ->

## GC and Exceptions in Wasmtime

DevFeed: [GC and Exceptions in Wasmtime](<https://devfeed.tech/articles/gc-and-exceptions-in-wasmtime-15142.md>)

Original publisher: [Read original article](<https://bytecodealliance.org/articles/wasmtime-gc>)

Author: Nick Fitzgerald

Published: 2026-07-20T00:00:00Z

Content type: release

Language: en

Sources: [Bytecode Alliance](<https://devfeed.tech/sources/bytecode-alliance.md>)

Topics: [WebAssembly](<https://devfeed.tech/topics/web-assembly.md>), [wasm](<https://devfeed.tech/topics/wasm.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [toolchains](<https://devfeed.tech/topics/toolchains.md>)

Tags: [compilation](<https://devfeed.tech/tags/compilation.md>), [exceptions](<https://devfeed.tech/tags/exceptions.md>), [release](<https://devfeed.tech/tags/release.md>), [toolchains](<https://devfeed.tech/tags/toolchains.md>), [wasm](<https://devfeed.tech/tags/wasm.md>), [webassembly](<https://devfeed.tech/tags/webassembly.md>)

### AI overview

Wasmtime 47 enables the Wasm GC and exceptions proposals by default. The article explains how Wasm GC supports languages with object-and-reference data models by letting the runtime manage types and lifetimes, while the exceptions proposal provides more efficient exception handling for WebAssembly compilation targets.

### Source excerpt

The Wasm GC and exceptions proposals are both enabled by default in today's Wasmtime 47 release! We are excited to help bring more languages to WebAssembly and everywhere that Wasmtime runs. Getting to this point involved large Wasmtime changes and represents the culmination of years of engineering effort.

## IntelliJ's New Kotlin Coroutine Inspections, Explained

DevFeed: [IntelliJ's New Kotlin Coroutine Inspections, Explained](<https://devfeed.tech/articles/intellij-s-new-kotlin-coroutine-inspections-explained-39320.md>)

Original publisher: [Read original article](<https://kt.academy/article/intellij-coroutines-new-warnings>)

Published: 2026-03-30T00:00:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [IntelliJ IDEA](<https://devfeed.tech/topics/intellij-idea.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/topics/kotlin-coroutines.md>), [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Exception](<https://devfeed.tech/topics/exception.md>)

Tags: [android-studio](<https://devfeed.tech/tags/android-studio.md>), [exceptions](<https://devfeed.tech/tags/exceptions.md>), [intellij-idea](<https://devfeed.tech/tags/intellij-idea.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This article explains new Kotlin coroutine inspections introduced in IntelliJ IDEA and also available in Android Studio. It describes warnings for coroutine usage patterns, including preferring awaitAll over await and currentCoroutineContext() over coroutineContext.

### Source excerpt

Exploration and explanation of new Kotlin coroutine inspections in IntelliJ IDEA.

## From error-handling to structured concurrency

DevFeed: [From error-handling to structured concurrency](<https://devfeed.tech/articles/from-error-handling-to-structured-concurrency-21946.md>)

Original publisher: [Read original article](<https://blog.nelhage.com/post/concurrent-error-handling/>)

Author: Nelson Elhage

Published: 2026-03-23T15:30:00Z

Content type: opinion

Language: en

Sources: [Nelson Elhage](<https://devfeed.tech/sources/nelson-elhage.md>)

Topics: [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [Error Handling](<https://devfeed.tech/topics/error-handling.md>), [Exception](<https://devfeed.tech/topics/exception.md>)

Tags: [concurrency](<https://devfeed.tech/tags/concurrency.md>), [error-handling](<https://devfeed.tech/tags/error-handling.md>), [examples](<https://devfeed.tech/tags/examples.md>), [exception](<https://devfeed.tech/tags/exception.md>), [exception-handling](<https://devfeed.tech/tags/exception-handling.md>), [structured-concurrency](<https://devfeed.tech/tags/structured-concurrency.md>)

### AI overview

This article examines how error-handling patterns based on stack unwinding and cleanup should be adapted for concurrent programs with multiple tasks. It introduces the problem of unhandled errors in concurrent execution and compares possible behaviors when one task fails.

### Source excerpt

How should we think about error-handling in concurrent programs? In single-threaded programs, we've mostly converged on a standard pattern, with a diverse zoo of implementations and concrete patterns. When an error occurs, it is propagated up the stack until we find a stack frame which is prepared to handle it. As we do so, we unwind the stack frames in-order, giving each frame the opportunity to clean up or destroy resources as appropriate.

## 5 ways to parse Dates and DateTimes in ClickHouse

DevFeed: [5 ways to parse Dates and DateTimes in ClickHouse](<https://devfeed.tech/articles/5-ways-to-parse-dates-and-datetimes-in-clickhouse-5485.md>)

Original publisher: [Read original article](<https://clickhouse.com/blog/parsing-dates-datetimes>)

Author: Mark Needham

Published: 2026-03-12T17:20:54Z

Content type: article

Language: en

Sources: [ClickHouse Blog](<https://devfeed.tech/sources/clickhouse-blog.md>)

Topics: [clickhouse](<https://devfeed.tech/topics/clickhouse.md>), [ISO 8601](<https://devfeed.tech/topics/iso-8601.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [MySQL](<https://devfeed.tech/topics/mysql.md>)

Tags: [apis](<https://devfeed.tech/tags/apis.md>), [blog](<https://devfeed.tech/tags/blog.md>), [clickhouse](<https://devfeed.tech/tags/clickhouse.md>), [database](<https://devfeed.tech/tags/database.md>), [exception](<https://devfeed.tech/tags/exception.md>), [post](<https://devfeed.tech/tags/post.md>), [time](<https://devfeed.tech/tags/time.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

This article explains five approaches to parsing dates and DateTimes in ClickHouse, covering Unix timestamps, packed numeric dates, known format strings, best-effort parsing, and direct casting. It also discusses handling invalid dates and configuring broader date-format support.

### Source excerpt

5 Ways to Parse Dates and DateTimes in ClickHouse

## PHPStan custom rules

DevFeed: [PHPStan custom rules](<https://devfeed.tech/articles/phpstan-custom-rules-39472.md>)

Original publisher: [Read original article](<https://akrabat.com/phpstan-custom-rules/>)

Author: Rob

Published: 2026-03-03T11:00:00Z

Content type: tutorial

Language: en

Sources: [Rob Allen](<https://devfeed.tech/sources/rob-allen.md>)

Topics: [PHP](<https://devfeed.tech/topics/php.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [Code](<https://devfeed.tech/topics/code.md>), [phpstorm](<https://devfeed.tech/topics/phpstorm.md>)

Tags: [autocomplete](<https://devfeed.tech/tags/autocomplete.md>), [class](<https://devfeed.tech/tags/class.md>), [code](<https://devfeed.tech/tags/code.md>), [container](<https://devfeed.tech/tags/container.md>), [exception](<https://devfeed.tech/tags/exception.md>), [extension](<https://devfeed.tech/tags/extension.md>), [php](<https://devfeed.tech/tags/php.md>), [phpstorm](<https://devfeed.tech/tags/phpstorm.md>), [runtime](<https://devfeed.tech/tags/runtime.md>), [settings](<https://devfeed.tech/tags/settings.md>)

### AI overview

This tutorial explains how a PHPStan custom rule can detect references to unavailable PHP classes. It also describes configuring PhpStorm to limit autocomplete to extensions used by the application.

### Source excerpt

Recently I discovered that this code passed our PHPStan level 10 checks: use http\Exception\InvalidArgumentException; // ... throw new InvalidArgumentException; I was surprised as http\Exception\InvalidArgumentException is not a class in our system. While cooling, I discovered that there's an http PHP extension and it appears that PHPStan has a stub for this which means that it accepts it as existing even if it doesn't. What we think happened is that I wrote throw new InvalidArgumentException; and... continue reading.

## Laravel January Product Releases

DevFeed: [Laravel January Product Releases](<https://devfeed.tech/articles/laravel-january-product-releases-3774.md>)

Original publisher: [Read original article](<https://laravel.com/blog/laravel-january-product-releases>)

Author: Laravel Team

Published: 2026-02-03T08:22:38Z

Content type: release

Language: en

Sources: [Laravel Blog](<https://devfeed.tech/sources/laravel-blog.md>)

Topics: [Laravel](<https://devfeed.tech/topics/laravel.md>), [releases](<https://devfeed.tech/topics/releases.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [API](<https://devfeed.tech/topics/api.md>), [Caching](<https://devfeed.tech/topics/caching.md>), [Cache](<https://devfeed.tech/topics/cache.md>), [Provisioning](<https://devfeed.tech/topics/provisioning.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [real-time](<https://devfeed.tech/topics/real-time.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [api](<https://devfeed.tech/tags/api.md>), [availability](<https://devfeed.tech/tags/availability.md>), [cache](<https://devfeed.tech/tags/cache.md>), [caching](<https://devfeed.tech/tags/caching.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [exception](<https://devfeed.tech/tags/exception.md>), [laravel](<https://devfeed.tech/tags/laravel.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [releases](<https://devfeed.tech/tags/releases.md>), [s3](<https://devfeed.tech/tags/s3.md>), [vs-code](<https://devfeed.tech/tags/vs-code.md>)

### AI overview

Laravel's January product releases add Private Cloud for enterprise deployments, bring Valkey to general availability, expand the Cloud API, add Hetzner S3 database backups in Forge, and introduce AI-powered exception descriptions and real-time detection in Nightwatch. The framework and related tools also receive workflow and API updates.

### Source excerpt

January brings Private Cloud, Valkey caching, expanded Cloud API, plus Forge backup options and Nightwatch real-time exception detection.

## Type conversion in Java - an alternative proposal for primitive type patterns

DevFeed: [Type conversion in Java - an alternative proposal for primitive type patterns](<https://devfeed.tech/articles/type-conversion-in-java-an-alternative-proposal-for-primitive-type-patterns-22013.md>)

Original publisher: [Read original article](<http://blog.joda.org/2025/10/type-conversion-in-java-alternative.html>)

Author: Stephen Colebourne (noreply@blogger.com)

Published: 2025-10-15T06:09:00Z

Content type: opinion

Language: en

Sources: [Stephen Colebourne](<https://devfeed.tech/sources/stephen-colebourne.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Code](<https://devfeed.tech/topics/code.md>), [Exception](<https://devfeed.tech/topics/exception.md>)

Tags: [exception](<https://devfeed.tech/tags/exception.md>), [java](<https://devfeed.tech/tags/java.md>), [javaideas](<https://devfeed.tech/tags/javaideas.md>), [pattern-matching](<https://devfeed.tech/tags/pattern-matching.md>), [patterns](<https://devfeed.tech/tags/patterns.md>), [safety](<https://devfeed.tech/tags/safety.md>)

### AI overview

The article proposes an alternative to Java's primitive type patterns in JEP 507. It distinguishes type checks from primitive type conversions and introduces type conversion casts and patterns, including a cast that throws an exception when a conversion would lose information.

### Source excerpt

A lot of good work has been done by the core Java team on patterns, providing new ways to explore data. The latest extension, in JEP 507, is the idea that primitive type patterns should be supported. Today I'm publishing an alternative approach. Primitive Types in Patterns, instanceof, and switch The current proposal is as follows: long val = createLong(); int i = (int) val; // cast long to int, potentially silently losing information switch (val) { case int j -> IO.println("Long fits in an int"); case long v -> IO.println("Long does not fit in an int"); }; I like the idea of being able to tell if a long value fits into an int without loss. But I hate the syntax. The key problem is that type patterns check the supertype/subtype relationship, and int is not a subtype of long. The result is code that doesn't seem to make sense. The official explanation is based on the notion that develoeprs use instanceof String before a cast to String all the time. Thus a parallel can be drawn to have an instanceof int before a cast to int. Effectively the aim is to extend the meaning of type patterns to cover primitive type casts, which are type conversions, not type checks. I know I am not alone in finding this argument weak, and in finding the proposed syntax highly confusing. But it took a while, and an 8 page document, to figure out exactly why. Type conversion in Java In response to the JEP and subsequent discussions, I have written up a detailed proposal for type conversion casts and type conversion patterns. These allow developers to more clearly express the difference between type checks (that check the supertype/subtype relationship) and type conversions (where primitive types are changed to a different type). The big idea is to introduce a new kind of cast, the type conversion cast that operates like a standard primitive type cast, but throws an exception when the conversion would be lossy. long val = createLong(); int i = (int) val; // cast long to int, potentially losing

## Simplifying Resource Management in mssql-python through Context Manager

DevFeed: [Simplifying Resource Management in mssql-python through Context Manager](<https://devfeed.tech/articles/simplifying-resource-management-in-mssql-python-through-context-manager-20355.md>)

Original publisher: [Read original article](<https://devblogs.microsoft.com/python/simplifying-resource-management-in-mssql-python-through-context-manager/>)

Author: Jahnvi Thakkar

Published: 2025-09-26T09:49:51Z

Content type: tutorial

Language: en

Sources: [Microsoft Python Engineering](<https://devfeed.tech/sources/microsoft-python-engineering.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [sql-server](<https://devfeed.tech/topics/sql-server.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Exception](<https://devfeed.tech/topics/exception.md>)

Tags: [azure](<https://devfeed.tech/tags/azure.md>), [azure-sql](<https://devfeed.tech/tags/azure-sql.md>), [cleanup](<https://devfeed.tech/tags/cleanup.md>), [client-driver](<https://devfeed.tech/tags/client-driver.md>), [databases](<https://devfeed.tech/tags/databases.md>), [exception-handling](<https://devfeed.tech/tags/exception-handling.md>), [python](<https://devfeed.tech/tags/python.md>), [python-driver-for-azure-sql](<https://devfeed.tech/tags/python-driver-for-azure-sql.md>), [python-driver-for-sql-server](<https://devfeed.tech/tags/python-driver-for-sql-server.md>), [sql-server](<https://devfeed.tech/tags/sql-server.md>), [sql-server-2025](<https://devfeed.tech/tags/sql-server-2025.md>), [transactions](<https://devfeed.tech/tags/transactions.md>)

### AI overview

This tutorial explains context manager support in the mssql-python driver for Python applications using SQL Server and Azure SQL. It describes how context managers manage connections and cursors, commit successful transactions, roll back transactions when exceptions occur, and close connections automatically.

### Source excerpt

Reviewed by: Sumit Sarabhai and Gaurav Sharma If you've worked with databases in Python, you know the boilerplate: open a connection, create a cursor, run queries, commit or rollback transactions, close cursors and connection. Forgetting just one cleanup step can lead to resource leaks (open connections) or even inconsistent data. That's where context managers step [...] The post Simplifying Resource Management in mssql-python through Context Manager appeared first on Microsoft for Python Developers Blog.

## Finally, You Can Drop the Parentheses in Python 3.14

DevFeed: [Finally, You Can Drop the Parentheses in Python 3.14](<https://devfeed.tech/articles/finally-you-can-drop-the-parentheses-in-python-3-14-20.md>)

Original publisher: [Read original article](<https://blog.abhimanyu-saharan.com/posts/finally-you-can-drop-the-parentheses-in-python-3-14>)

Author: Abhimanyu Saharan

Published: 2025-05-25T00:00:00Z

Content type: article

Language: en

Sources: [Abhimanyu Saharan](<https://devfeed.tech/sources/abhimanyu-s-blog.md>)

Topics: [Python 3.14](<https://devfeed.tech/topics/python-3-14.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [Python](<https://devfeed.tech/topics/python.md>)

Tags: [exception](<https://devfeed.tech/tags/exception.md>), [exception-handling](<https://devfeed.tech/tags/exception-handling.md>), [python](<https://devfeed.tech/tags/python.md>), [python-3-14](<https://devfeed.tech/tags/python-3-14.md>)

### AI overview

Python 3.14 introduces a cleaner syntax for catching multiple exceptions by allowing the parentheses to be omitted, as specified in PEP 758.

### Source excerpt

Python 3.14 simplifies exception handling with PEP 758, letting you drop parentheses when catching multiple exceptions, cleaner, consistent, and backward-safe.

## Eliminating Array Bounds Checks

DevFeed: [Eliminating Array Bounds Checks](<https://devfeed.tech/articles/eliminating-array-bounds-checks-25610.md>)

Original publisher: [Read original article](<https://www.romainguy.dev/posts/2025/eliminating-array-bounds-checks/>)

Author: Romain Guy

Published: 2025-05-13T00:00:00Z

Content type: tutorial

Language: en

Sources: [Posts on Romain Guy](<https://devfeed.tech/sources/posts-on-romain-guy.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Memory Safety](<https://devfeed.tech/topics/memory-safety.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [toolchain](<https://devfeed.tech/topics/toolchain.md>), [inlining](<https://devfeed.tech/topics/inlining.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [assembly](<https://devfeed.tech/tags/assembly.md>), [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [developer](<https://devfeed.tech/tags/developer.md>), [exception](<https://devfeed.tech/tags/exception.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [inlining](<https://devfeed.tech/tags/inlining.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [memory-safety](<https://devfeed.tech/tags/memory-safety.md>), [performance](<https://devfeed.tech/tags/performance.md>), [toolchain](<https://devfeed.tech/tags/toolchain.md>)

### AI overview

This tutorial explains how Android Runtime array bounds checks protect memory safety but can add unnecessary instructions. It shows how a simple explicit check can help the compiler eliminate those checks in a fixed-size array, reducing the example from 136 to 60 arm64 instructions.

### Source excerpt

The Android Runtime (ART) offers a nice memory safety feature when accessing the content of an array. The indices you use are automatically checked against the bounds of the array to prevent unsafe memory accesses. To achieve this, ART generates extra machine instructions to throw an ArrayIndexOutOfBoundsException when the index is invalid. Here is a simple Kotlin example: 1fun scaleZ(values: FloatArray, scale: Float) = values[2] * scale After translation to arm64 assembly, we obtain the following result:

## C++ exception performance three years later

DevFeed: [C++ exception performance three years later](<https://devfeed.tech/articles/c-exception-performance-three-years-later-25087.md>)

Original publisher: [Read original article](<https://databasearchitects.blogspot.com/2024/12/c-exception-performance-three-years.html>)

Author: Thomas Neumann (noreply@blogger.com)

Published: 2024-12-10T14:44:00Z

Content type: article

Language: en

Sources: [Database Architects](<https://devfeed.tech/sources/database-architects.md>)

Topics: [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [Scalability](<https://devfeed.tech/topics/scalability.md>), [gcc](<https://devfeed.tech/topics/gcc.md>), [JIT](<https://devfeed.tech/topics/jit.md>), [LLVM](<https://devfeed.tech/topics/llvm.md>)

Tags: [benchmark](<https://devfeed.tech/tags/benchmark.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [clang](<https://devfeed.tech/tags/clang.md>), [exception](<https://devfeed.tech/tags/exception.md>), [gcc](<https://devfeed.tech/tags/gcc.md>), [glibc](<https://devfeed.tech/tags/glibc.md>), [jit](<https://devfeed.tech/tags/jit.md>), [llvm](<https://devfeed.tech/tags/llvm.md>), [performance](<https://devfeed.tech/tags/performance.md>), [series](<https://devfeed.tech/tags/series.md>)

### AI overview

The article reviews improvements to C++ exception unwinding performance. Lock-free lookup mechanisms in glibc and libgcc improve scalability for statically generated and JIT-generated code, although clang's implementation may still have scaling limitations.

### Source excerpt

About three years ago we noticed serious performance problems in C++ exception unwinding. Due to contention on the unwinding path these became more and more severe the more cores a system had, and unwinding could slow down by orders of magnitude. Due to the constraints of backwards compatibility this contention was not easy to eliminate, and P2544 discussed ways to fix this problem via language changes in C++. But fortunately people found less invasive solutions. First, Florian Weimer changed the glibc to provide a lock-free mechanism to find the (static) unwind tables for a given shared object. Which eliminates the most serious contention for "simple" C++ programs. For example in a micro-benchmark that calls a function with some computations (100 calls to sqrt per function invocation), and which throws with a certain probability, we previously had very poor scalability with increasing core count. With his patch we now see with gcc 14.2 on a dual-socket EPYC 7713 the following performance development (runtime in ms): 1 2 4 8 16 32 64 128 threads 0% failure 29 29 29 29 29 29 29 42 0.1% failure 29 29 29 29 29 29 29 32 1% failure 29 30 30 30 30 30 32 34 10% failure 36 36 37 37 37 37 47 65 Which is more or less perfect. 128 threads are a bit slower, but that is to be expected as one EPYC only has 64 cores. With higher failure rates unwinding itself becomes slower but that is still acceptable here. Thus most C++ programs are just fine. For our use case that is not enough, though. We dynamically generate machine code at runtime, and we want to be able to pass exceptions through generated code. The _dl_find_object mechanism of glibc is not used for JITed code, instead libgcc maintains its own lookup structure. Historically this was a simple list with a global lock, which of course had terrible performance. But through a series of patches we managed to change libgcc into using a lock-free b-tree for maintaining the dynamic unwinding frames. Using a similar experiment to the

[Next page](<https://devfeed.tech/topics/exception.md?cursor=WyIyMDI0LTEyLTEwVDE0OjQ0OjAwKzAwOjAwIiwgIjBmOGQwNzY4LTgxYzAtNDA3ZS1iODI4LThiOTA1N2Y3NzFjZSJd>)