From b03e0358a37d1c6e248e885cb2d7bfa63e4b5fcb Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 29 Jul 2026 00:54:56 +0200 Subject: [PATCH 1/5] init episode --- content/podcast/s06e09-jetbrains/index.md | 68 ++++++++++++++++++++ content/podcast/s06e09-jetbrains/logo.svg | 43 +++++++++++++ content/podcast/s06e09-jetbrains/social.png | Bin 0 -> 37995 bytes 3 files changed, 111 insertions(+) create mode 100644 content/podcast/s06e09-jetbrains/index.md create mode 100644 content/podcast/s06e09-jetbrains/logo.svg create mode 100644 content/podcast/s06e09-jetbrains/social.png diff --git a/content/podcast/s06e09-jetbrains/index.md b/content/podcast/s06e09-jetbrains/index.md new file mode 100644 index 00000000..5efe4d7b --- /dev/null +++ b/content/podcast/s06e09-jetbrains/index.md @@ -0,0 +1,68 @@ ++++ +title = "JetBrains" +date = 2026-07-30 +template = "episode.html" +draft = false +aliases = ["/p/s06e09"] +[extra] +guest = "Orhun Parmaksız" +role = "Rust Developer Advocate" +season = "06" +episode = "09" +series = "Podcast" ++++ + +Welcome to the final episode of this season of Rust in Production. My guest is Orhun Parmaksız from JetBrains, and we talk about building developer tools with Rust. + +JetBrains is best known for IntelliJ IDEA, Kotlin, and a long line of IDEs for professional software teams. In the Rust world, that now includes RustRover: a commercial IDE built on the IntelliJ platform, with deep Rust support for navigation, refactoring, debugging, testing, and large codebases. + +This episode is about where Rust fits into that world. We talk about why JetBrains does not plan to rewrite the IntelliJ platform in Rust, why Fleet used Rust for its File System Daemon, how Air builds on parts of Fleet's architecture, and why JetBrains prefers out-of-process Rust helpers over JNI inside the JVM. We also get into RustRover's internals: PSI, THIR, MIR-based expression evaluation in the debugger, procedural macro sandboxing, library stubs, parser regression testing, cargo-nextest support, and the practical trade-offs between JetBrains' indexing model and rust-analyzer's Salsa-based approach. + +{{ codecrafters() }} + +## Show Notes + +### Links From The Episode + +- [Ratatui](https://ratatui.rs/) - The terminal UI library that changed Orhun's life +- [ratatuefi](https://github.com/sermuns/ratatuefi) - A demo showing Ratatui running in UEFI without an operating system kernel +- [Renaissance of Terminal User Interfaces with Rust](https://media.ccc.de/v/froscon2024-3147-renaissance_of_terminal_user_interfaces_with_rust) - Orhun's FrOSCon talk about Ratatui and Rust-powered TUIs +- [lychee](https://lychee.cli.rs/overview/) - Matthias' Rust link checker project +- [Orhun's Arch Linux packages](https://archlinux.org/packages/?maintainer=orhun) - A great way to discover Rust projects through packaging work +- [RustRover](https://www.jetbrains.com/rust/) - JetBrains' fully integrated Rust development suite +- [IdeaVim](https://lp.jetbrains.com/ideavim/) - Vim mode for JetBrains IDEs +- [LightEdit mode](https://www.jetbrains.com/help/idea/lightedit-mode.html) - Quick startup for simple editing tasks in JetBrains IDEs +- [Welcome to Fleet!](https://blog.jetbrains.com/blog/2021/11/29/welcome-to-fleet/) - The original Fleet announcement +- [Fleet Below Deck, Part I: Architecture Overview](https://blog.jetbrains.com/fleet/2022/01/fleet-below-deck-part-i-architecture-overview/) - Details on Fleet's hybrid architecture and Rust-based File System Daemon +- [JetBrains Air](https://air.dev/) - The agentic successor to Fleet +- [Rust MIR](https://rustc-dev-guide.rust-lang.org/mir/index.html) - The Mid-level IR used as a hook point for RustRover's debugger integrations +- [Fewer False Positives in RustRover 2026.1](https://blog.jetbrains.com/rust/2026/06/09/fewer-false-positives-rustrover/) - Background on JetBrains' Crate Rover-inspired diagnostics regression work +- [Crater](https://crater.rust-lang.org/) - The Rust Project's CI tool for rebuilding public crates and catching regressions +- [rust-analyzer](https://rust-analyzer.github.io/) - The Rust IDE backend solving many similar problems from a different architecture +- [Code in Rust with RustRover](https://www.youtube.com/watch?v=pnFS0YIKUJ8) - Vitaly Bragilevsky's RustRover talk +- [How Rust IDEs Understand Code](https://blog.jetbrains.com/rust/2026/05/29/how-rust-ides-understand-code/) - Recap of the RustRover and rust-analyzer livestream with Lukas Wirth and Vlad Beskrovny +- [Salsa](https://github.com/salsa-rs/salsa) - The incremental computation framework used by rust-analyzer +- [RustRover licenses for open source](https://www.jetbrains.com/community/opensource/) - One way JetBrains supports open-source projects +- [Rust Berlin Talks at JetBrains](https://berline.rs/2026/04/01/berlin-talks.html) - Berlin Rust meetup hosted at the JetBrains office +- [JetBrains Academy plugin](https://plugins.jetbrains.com/plugin/10081-jetbrains-academy) - Learn Rust inside RustRover and other JetBrains IDEs +- [Rust in Production: Rust with Niko Matsakis](https://corrode.dev/podcast/s04e04-rust/) - The Rust Project episode mentioned in this conversation +- [Rust Commercial Network](https://rustfoundation.org/rust-commercial-network/) - JetBrains and Ratatui are both part of the network +- [cargo-nextest](https://nexte.st/) - An alternative Rust test runner with benefits over plain `cargo test` +- [What's New in RustRover 2026.2](https://blog.jetbrains.com/rust/2026/07/22/whats-new-in-rustrover-2026-2/) - The latest RustRover release with tighter Axum and reqwest integration +- [PhpStorm](https://www.jetbrains.com/phpstorm/) - Matthias' first experience with JetBrains products +- [Zig 2026: No-AI Policy, $670K Foundation, Left GitHub & Why Zig Isn't 1.0](https://www.youtube.com/watch?v=iqddnwKF8HQ) - JetBrains' interview with Andrew Kelley +- [Interactive declarative macro tester](https://blog.jetbrains.com/rust/2026/07/22/whats-new-in-rustrover-2026-2/) - A RustRover feature for better macro debugging during development +- [Grindhouse](https://grindhouse.dev/) - A joke turned into a flourishing community +- [Terminal Tuesdays](https://www.youtube.com/@orhundev) - Orhun's terminal-focused livestreams and interviews +- [Terminal Collective Discord](https://discord.com/invite/6EUERBrAMs) - The terminal community Discord server +- [Ratty](https://github.com/orhun/ratty) - A fun GPU-rendered terminal emulator with inline 3D graphics + +### Official Links + +- [JetBrains Website](https://www.jetbrains.com/) +- [RustRover](https://www.jetbrains.com/rust/) +- [JetBrains Open Source Support](https://www.jetbrains.com/community/opensource/) +- [Orhun's Website](https://orhun.dev/) +- [Orhun on GitHub](https://github.com/orhun) +- [Orhun on Bluesky](https://bsky.app/profile/orhun.dev) +- [Orhun on LinkedIn](https://www.linkedin.com/in/orhunp/) diff --git a/content/podcast/s06e09-jetbrains/logo.svg b/content/podcast/s06e09-jetbrains/logo.svg new file mode 100644 index 00000000..44d82ec8 --- /dev/null +++ b/content/podcast/s06e09-jetbrains/logo.svg @@ -0,0 +1,43 @@ + + + + + + diff --git a/content/podcast/s06e09-jetbrains/social.png b/content/podcast/s06e09-jetbrains/social.png new file mode 100644 index 0000000000000000000000000000000000000000..cfcd10c56423eed9e203067b018a49cfbab2a107 GIT binary patch literal 37995 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 Date: Wed, 29 Jul 2026 12:42:06 +0200 Subject: [PATCH 2/5] Update content/podcast/s06e09-jetbrains/index.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Orhun Parmaksız --- content/podcast/s06e09-jetbrains/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/podcast/s06e09-jetbrains/index.md b/content/podcast/s06e09-jetbrains/index.md index 5efe4d7b..923f9b9e 100644 --- a/content/podcast/s06e09-jetbrains/index.md +++ b/content/podcast/s06e09-jetbrains/index.md @@ -53,7 +53,7 @@ This episode is about where Rust fits into that world. We talk about why JetBrai - [Zig 2026: No-AI Policy, $670K Foundation, Left GitHub & Why Zig Isn't 1.0](https://www.youtube.com/watch?v=iqddnwKF8HQ) - JetBrains' interview with Andrew Kelley - [Interactive declarative macro tester](https://blog.jetbrains.com/rust/2026/07/22/whats-new-in-rustrover-2026-2/) - A RustRover feature for better macro debugging during development - [Grindhouse](https://grindhouse.dev/) - A joke turned into a flourishing community -- [Terminal Tuesdays](https://www.youtube.com/@orhundev) - Orhun's terminal-focused livestreams and interviews +- [Terminal Tuesdays](https://www.youtube.com/@TerminalCollectiveOrg) - Orhun's terminal-focused livestreams and interviews - [Terminal Collective Discord](https://discord.com/invite/6EUERBrAMs) - The terminal community Discord server - [Ratty](https://github.com/orhun/ratty) - A fun GPU-rendered terminal emulator with inline 3D graphics From 61d4abc66638fa37783b067e8ebae4555745e98b Mon Sep 17 00:00:00 2001 From: Matthias Endler Date: Wed, 29 Jul 2026 12:42:16 +0200 Subject: [PATCH 3/5] Update content/podcast/s06e09-jetbrains/index.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Orhun Parmaksız --- content/podcast/s06e09-jetbrains/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/podcast/s06e09-jetbrains/index.md b/content/podcast/s06e09-jetbrains/index.md index 923f9b9e..eb380601 100644 --- a/content/podcast/s06e09-jetbrains/index.md +++ b/content/podcast/s06e09-jetbrains/index.md @@ -64,5 +64,6 @@ This episode is about where Rust fits into that world. We talk about why JetBrai - [JetBrains Open Source Support](https://www.jetbrains.com/community/opensource/) - [Orhun's Website](https://orhun.dev/) - [Orhun on GitHub](https://github.com/orhun) +- [Orhun on YouTube](https://youtube.com/@orhundev) - [Orhun on Bluesky](https://bsky.app/profile/orhun.dev) - [Orhun on LinkedIn](https://www.linkedin.com/in/orhunp/) From 7b4769f671f1d332932394e36c8ac4d38f200922 Mon Sep 17 00:00:00 2001 From: Matthias Endler Date: Wed, 29 Jul 2026 12:42:25 +0200 Subject: [PATCH 4/5] Update content/podcast/s06e09-jetbrains/index.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Orhun Parmaksız --- content/podcast/s06e09-jetbrains/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/podcast/s06e09-jetbrains/index.md b/content/podcast/s06e09-jetbrains/index.md index eb380601..d5c64644 100644 --- a/content/podcast/s06e09-jetbrains/index.md +++ b/content/podcast/s06e09-jetbrains/index.md @@ -43,7 +43,7 @@ This episode is about where Rust fits into that world. We talk about why JetBrai - [How Rust IDEs Understand Code](https://blog.jetbrains.com/rust/2026/05/29/how-rust-ides-understand-code/) - Recap of the RustRover and rust-analyzer livestream with Lukas Wirth and Vlad Beskrovny - [Salsa](https://github.com/salsa-rs/salsa) - The incremental computation framework used by rust-analyzer - [RustRover licenses for open source](https://www.jetbrains.com/community/opensource/) - One way JetBrains supports open-source projects -- [Rust Berlin Talks at JetBrains](https://berline.rs/2026/04/01/berlin-talks.html) - Berlin Rust meetup hosted at the JetBrains office +- [Rust Berlin Talks at JetBrains](https://www.youtube.com/watch?v=ut5EHZ2FK0c) - Berlin Rust meetup hosted at the JetBrains office - [JetBrains Academy plugin](https://plugins.jetbrains.com/plugin/10081-jetbrains-academy) - Learn Rust inside RustRover and other JetBrains IDEs - [Rust in Production: Rust with Niko Matsakis](https://corrode.dev/podcast/s04e04-rust/) - The Rust Project episode mentioned in this conversation - [Rust Commercial Network](https://rustfoundation.org/rust-commercial-network/) - JetBrains and Ratatui are both part of the network From 9e18959bdc8a5d71c72a85629b54820f92d547de Mon Sep 17 00:00:00 2001 From: M3t0r Date: Thu, 30 Jul 2026 03:40:05 +0200 Subject: [PATCH 5/5] Add feed player --- content/podcast/s06e09-jetbrains/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/podcast/s06e09-jetbrains/index.md b/content/podcast/s06e09-jetbrains/index.md index d5c64644..38e85551 100644 --- a/content/podcast/s06e09-jetbrains/index.md +++ b/content/podcast/s06e09-jetbrains/index.md @@ -12,6 +12,8 @@ episode = "09" series = "Podcast" +++ +
+ Welcome to the final episode of this season of Rust in Production. My guest is Orhun Parmaksız from JetBrains, and we talk about building developer tools with Rust. JetBrains is best known for IntelliJ IDEA, Kotlin, and a long line of IDEs for professional software teams. In the Rust world, that now includes RustRover: a commercial IDE built on the IntelliJ platform, with deep Rust support for navigation, refactoring, debugging, testing, and large codebases.