[Перевод] Кому нужен Graphviz, если можно написать его самому?

Недавно мы переделали наши внутренние инструменты, визуализирующие компиляцию JavaScript и WebAssembly. При работе оптимизирующего компилятора Ion мы теперь можем генерировать интерактивные графы, демонстрирующие, как конкретно обрабатываются и оптимизируются функции. Вы можете сами поэкспериментировать с этими графами в оригинале статьи . Просто введите какой-нибудь код на JavaScript в функцию test , и наблюдайте за созданием графа. Также там можно щёлкать и перетаскивать граф, менять масштаб при помощи колеса мыши с зажатым Ctrl и перетаскивать ползунок вниз, чтобы изучить процесс оптимизации. В процессе экспериментов обратите внимание на то, насколько стабильна схема графа даже при изменении размеров блоков и добавлении новых структур. Попробуйте нажать на заголовок блока, чтобы выделить его, а затем перетащить ползунок, и наблюдайте за тем, как меняется граф, а блок остаётся на месте. Или нажмите на номер команды, чтобы подсветить её и следить за ней между проходами. Разумеется, мы не первые, кто начал визуализировать внутренние графы компиляторов, и не первые, кто сделал их интерактивными. Но меня не устраивали результаты работы популярных инструментов наподобие Graphviz и Mermaid , поэтому я решил создать алгоритм специально под наши потребности. Получившийся алгоритм прост, быстр, создаёт на удивление высококачественный вывод и его можно реализовать в менее чем тысяче строк кода. В этой статье я объясню алгоритм и конструкторские решения, лежащие в его основе.

https://habr.com/ru/articles/962436/

#spidermonkey #графы #графы_визуализация #компиляция

Кому нужен Graphviz, если можно написать его самому?

Недавно мы переделали наши внутренние инструменты, визуализирующие компиляцию JavaScript и WebAssembly. При работе оптимизирующего компилятора Ion мы теперь можем генерировать интерактивные графы,...

Хабр

Who needs Graphviz when you can build it yourself?, https://spidermonkey.dev/blog/2025/10/28/iongraph-web.html.

SpiderMonkey has replaced Graphviz by a custom graph layout renderer for their internal devtools. This article explains how the algorithm works, step by step (inspired by Sugiyama et al.'s algorithm, used by Graphviz, but simplified and with more constraints).

Pretty neat!

#SpiderMonkey #graph #layout #DevTools #compiler

Who needs Graphviz when you can build it yourself?

Exploring a new layout algorithm for control flow graphs.

SpiderMonkey JavaScript/WebAssembly Engine
🤔 Ah, the thrilling world of trash collection, but make it *SpiderMonkey* 🕷️✨. If you ever dreamed of dumpster diving into Firefox's inner workings while drowning in jargon, this article's for you! 🌐🔍 It's like reading a phonebook 📖, but with extra steps and a dash of developer tears. 💧💻
https://firefox-source-docs.mozilla.org/js/gc.html #TrashCollection #SpiderMonkey #Firefox #DeveloperTears #TechJargon #OpenSource #HackerNews #ngated
SpiderMonkey garbage collector — Firefox Source Docs documentation

SpiderMonkey garbage collector — Firefox Source Docs documentation

JavaScript Engines Explained—Comparing V8, SpiderMonkey, JavaScriptCore, and More, by @designerly.bsky.social:

https://frontenddogma.com/posts/2025/javascript-engines-explained/

#guestposts #javascript #javascriptengines #v8 #spidermonkey

JavaScript Engines Explained—Comparing V8, SpiderMonkey, JavaScriptCore, and More · Frontend Dogma

Spider Monkey Angelo - Warning Scream

🎶 If you touch me? Well I just think i'll scream...cos its been so long, since someone's challenged me. 🎶

#furryart #fursona #spidermonkey #monkey #anthroart #drawing #digitalart #illustration #screaming #mastoart #transman

Tryna get this pose down for Spider Monkey Angelo has been a bitch, but its mainly that back leg tho. (I'll get it down tho)

#furryart #fursona #sketchbook #drawing #traditionalart #spidermonkey #primate #monkey #sketch #wip #mastoart

🌗 使用 bpftrace 探索語言運行時
➤ 透過動態追蹤改善 JavaScript 引擎效能
https://www.mgaudet.ca/technical/2025/5/28/exploring-a-language-runtime-with-bpftrace
這篇文章描述了作者使用 eBPF 和 bpftrace 工具來分析 JavaScript 引擎 SpiderMonkey 的運行時行為。作者成功利用 bpftrace 追蹤 `Rooted` 建構子的呼叫來源,協助找出可以優化程式碼的地方,例如透過使用 `RootedTuple` 減少不必要的呼叫。此過程不僅展示了 bpftrace 的強大功能,也突顯了在效能分析中尋找問題並解決問題的實用價值。
+ 這篇文章寫得真好,清楚地解釋了 bpftrace 的應用,讓我不斷想嘗試用它來分析自己的程式碼。
+ 感覺 bpftrace 是一個非常強大的工具,可以深入瞭解程式的運行機制,但學習曲線可能有點陡峭。
#程式設計 #效能分析 #eBPF #SpiderMonkey
Exploring a language runtime with bpftrace — Matthew Gaudet

Matthew Gaudet