# \[Blog post\] Cancellation in Julia 1.14

**URL:** <https://discourse.julialang.org/t/blog-post-cancellation-in-julia-1-14/142762>\
**Category:** Community\
**Created:** [November 4, 2026, 1:25pm UTC](https://discourse.julialang.org/t/blog-post-cancellation-in-julia-1-14/142762 "2026-11-04T13:25:08Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![jakobnissen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jakobnissen/32/13477_2.png) [@jakobnissen](https://discourse.julialang.org/u/jakobnissen)\
**Post date:** [November 4, 2026, 1:25pm UTC](https://discourse.julialang.org/t/blog-post-cancellation-in-julia-1-14/142762/1 "2026-11-04T13:25:09Z")

</div>

I made a blog post on the new cancellation feature in Julia 1.14, here:

> **[Cancellation in Julia 1.14](https://viralinstruction.com/posts/cancellation/)**
>
> How Julia's new cancellation system works.

The post describes what the cancellation system is for, how to use it, and how it works. Please let me know what you think! Especially let me know if I got something wrong.

---

<div class="post-metadata">

**Author:** ![abraemer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/abraemer/32/51403_2.png) [@abraemer](https://discourse.julialang.org/u/abraemer)\
**Post date:** [November 4, 2026, 3:43pm UTC](https://discourse.julialang.org/t/blog-post-cancellation-in-julia-1-14/142762/2 "2026-11-04T15:43:32Z")

</div>

Great read! Thanks for that! 😃

I found it very clearly written overall. I just noticed that I had 2 small points of confusion when reading.

> The compiler reasonably assumes that no code that is :effect\_free can cause the code to enter an illegal state.

Took me a while to parse. I think for me it would be easier to get with the negation in a different place.

Suggestion:  
The compiler reasonably assumes that ~~no~~ code that is `:effect_free` can **not** cause the code to enter an illegal state.

> Then, you can make a new token source, and pass its derived token to the child task:

And the example. I only got what you meant later on. In hindsight, the example is now clear to me. I think what confused me is that you talk about parent and child but in this example the parent lifetime is not so clear? Not sure.

Maybe for me a clearer demonstration would have been be to create 2 children coupled to the same source and explaining that this couples their lifetimes in the sense that both are cancled at the same time.

---

<div class="post-metadata">

**Author:** ![csvance](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/csvance/32/218927_2.png) [@csvance](https://discourse.julialang.org/u/csvance)\
**Post date:** [November 4, 2026, 4:48pm UTC](https://discourse.julialang.org/t/blog-post-cancellation-in-julia-1-14/142762/3 "2026-11-04T16:48:12Z")

</div>

Thanks for the write up! I like how the implementation allows for cancellation inside of a `@ccall`. I’m guessing we are responsible for making sure that the external code is effect free? So if we declare it and a lock is taken somewhere, we could end up with a deadlock.
