Key Takeaways
Featuring a diversity of programming languages, backend technology offers the right tool for any kind of job. At the frontend, however, it's one size fits all: JavaScript. Someone with only a hammer will have to treat anything like a nail. One attempt to break open this restricted world is represented by the growing set of source to source compilers that target JavaScript. Such compilers are available for languages as diverse as Scala, C++, Ruby, and Python. The Transcrypt Python to JavaScript compiler is a relatively new open source project, aiming at executing Python 3.6 at JavaScript speed, with comparable file sizes.
For a tool like this to offer an attractive alternative to everyday web development in JavaScript, at least the following three demands have to be met:
To be successful, all aspects of these three requirements have to be met. Different compilers strike a different balance between them, but no viable compiler for every day production use can neglect any of them. For Transcrypt, each of the above three points has led to certain design decisions.
Demand 1:
Look and feel of web sites and web applications are directly connected to the underlying JavaScript libraries used, so to have exactly the same look and feel, a site or application should use exactly the same libraries.
Although fast connections may hide the differences, achieving the same page load time, even on mobile devices running on public networks, mandates having roughly the same code size. This rules out downloading a compiler, virtual machine or large runtime at each new page load.
Achieving the same startup time as pages utilizing native JavaScript is only possible if the code is statically precompiled to JavaScript on the server. The larger the amount of code needed for a certain page, the more obvious the difference becomes.
To have the same sustained speed, the generated JavaScript must be efficient. Since JavaScript virtual machines are highly optimized for common coding patterns, the generated JavaScript should be similar to handwritten JavaScript, rather than emulating a stack machine or any other low level abstraction.
Demand 2:
To allow seamless access to any JavaScript library, Python and JavaScript have to use unified data formats, a unified calling model, and a unified object model. The latter requires the JavaScript prototype based single inheritance mechanism to somehow gel with Pythons class based multiple inheritance. Note that the recent addition of the keyword 'class' to JavaScript has no impact on the need to bridge this fundamental difference.
To enable efficient debugging, things like setting breakpoints and single stepping through code have to be done on the source level. In other words: source maps are necessary. Whenever a problem is encountered it must be possible to inspect and comprehend the generated JavaScript to pinpoint exactly what's going on. To this end, the generated JavaScript should be isomorphic to the Python source code.
The ability to capitalize on existing skills means that the source code has to be pure Python, not some syntactic variation. A robust way to achieve this is to use Python's native parser. The same holds for semantics, a requirement that poses practical problems and requires introduction of compiler directives to maintain runtime efficiency.
Demand 3:
Continuity is needed to protect investments in client side Python code, requiring continued availability of client side Python compilers with both good conformance and good performance. Striking the right balance between these two is the most critical part of designing a compiler.
Continued availability of trained Python developers is sufficiently warranted by the fact that Python has been the number 1 language taught in introductory computer science courses for three consecutive years now. On the backend it is used for every conceivable branch of computing. All these developers, used to designing large, long lived systems rather than insulated, short lived pieces of frontend script code, become available to browser programming if it is done in Python.
With regard to productivity, many developers that have made the switch from a different programming language to Python agree that it has significantly increased their output while retaining runtime performance. The latter is due to the fact that libraries used by Python applications for time critical operations like numerical processing and 3D graphics usually compile to native machine code.
The last point openness to changed needs means that modularity and flexibility have to be supported at every level. The presence, right from the start, of class-based OO with multiple inheritance and a sophisticated module and package mechanism has contributed to this. In addition, the possibility to use named and default parameters allows developers to change call signatures in a late stage without breaking existing code.
Conformance versus performance: language convergence to the rescue
Many Python constructs closely match JavaScript constructs, especially when translating to newer versions of JavaScript. There's a clear convergence between both languages. Specifically, more and more elements of Python make their way into JavaScript: for ... of ..., classes (in a limited form), modules, destructuring assignment and argument spreading. Since constructs like for ... of ... are highly optimized on modern JavaScript virtual machines, it's advantageous to translate such Python constructs to closely matching JavaScript constructs. Such isomorphic translation will result in code that can benefit from optimizations in the target language. It will also result in JavaScript code that is easy to read and debug.
Although with Transcrypt, through the presence of source maps, most debugging will take place stepping through Python rather than JavaScript code, a tool should not conceal but rather reveal the underlying technology, granting developer full access to 'what's actually going on'. This is even more desirable since native JavaScript code can be inserted at any point in the Python source, using a compiler directive.
The isomorphism between Python and the JavaScript code generated by Transcrypt is illustrated by the following fragment using multiple inheritance.
translates to:
Striving for isomorphic translation has limitations, rooted in subtle, but sometimes hard to overcome differences between the two languages. Whereas Python allows lists to be concatenated with the + operator, isomorphic use of this operator in JavaScript result in both lists being converted to strings and then glued together. Of course a + b could be translated to __add__ (a, b), but since the type of a and b is determined at runtime, this would result in a function call and dynamic type inspection code being generated for something as simple as 1 + 1, resulting in bad performance for computations in inner loops. Another example is Python's interpretation of 'truthyness'. The boolean value of an empty list is True (or rather: true) in JavaScript and False in Python. Dealing with this globally in an application would require every if-statement to feature a conversion, since in the Python construct if a: it cannot be predicted whether a holds a boolean or somthing else like a list So if a: would have to be translated to if( __istrue__ (a)), again resulting in slow performance if used in inner loops.
In Transcrypt, compiler directives embedded in the code (pragmas) are used control compilation of such constructs locally. This enables writing matrix computations using standard mathematics notation like M4 = (M1 + M2) * M3, at the same time not generating any overhead for something like perimeter = 2 * pi * radius. Syntactically, pragma's are just calls to the __pragma__ function, executed compile time rather than run time. Importing a stub module containing def __pragma__ (directive, parameters): pass allows this code to run on CPython as well, without modification. Alternatively, pragmas can be placed in comments.
Unifying the type system while avoiding name clashes
Another fundamental design choice for Transcrypt was to unify the Python and the JavaScript type system, rather than have them live next to each other, converting between them on the fly. Data conversion costs time and increases target code size as well as memory use. It burdens the garbage collector and makes interaction between Python code and JavaScript libraries cumbersome.
So the decision was made to embrace the JavaScript world, rather than to create a parallel universe. A simple example of this is the following code using the Plotly.js library:
Apart from the pragma allowing to leave out the quotes from dictionary keys, which is optional and only used for convenience, the code looks a lot like comparable JavaScript code. Note the (optional) use of list comprehensions, a facility JavaScript still lacks. The fact that Python dictionary literals are mapped to JavaScript object literals is of no concern to the developer; they can use the Plotly JavaScript documentation while writing Python code. No conversion is done behind the scenes. A Transcrypt dict IS a JavaScript object, in all cases.
In unifying the type systems, name clashes occur. Python and JavaScript strings both have a split (), but their semantics have important differences. There are many cases of such clashes and, since both Python and JavaScript are evolving, future clashes are to be expected.
To deal with these, Transcrypt supports the notion of aliases. Whenever in Python
Aliases also allow generation of any JavaScript identifier from a Python identifier. An example is the $ character, that is allowed as part of a name in JavaScript but forbidden in Python. Transcrypt strictly conforms Python syntax and is parsed by the native CPython parser, making its syntax identical. A piece of code using JQuery may look as follows:
Since Transcrypt uses compilation rather than interpretation, imports have to be decided upon compile time, to allow joined minification and shipment of all modules involved. To this end C-style conditional compilation is supported, as can be seen in the following code fragment:
The same mechanism is used in the Transcrypt runtime to switch between JavaScript 5 and JavaScript 6 code:
In this way optimizations in newer JavaScript versions are taken into account, retaining backward compatibility. In some cases, the possibility for optimization is preferred over isomorphism:
Some optimizations are optional, such as the possibility to activate call caching, resulting in repeated calls to inherited methods being done directly, rather than through the prototype chain.
Static versus dynamic typing: Scripting languages growing mature
There has been a resurgence in appreciation of the benefits of static typing, with TypeScript being the best known example. In Python, as opposed to JavaScript, static typing syntax is an integral part of the language and supported by the native parser. Type checking itself, however, is left to third party tools, most notably mypy, a project from Jukka Lehtosalo with regular contributions of Python initiator Guido van Rossum. To enable efficient use of mypy in Transcrypt, the Transcrypt team contributed a lightweight API to the project, that makes it possible to activate mypy from another Python application without going through the operating system. Although mypy is still under development, it already catches an impressive amount of typing errors at compile time. Static type checking is optional and can be activated locally by inserting standard type annotations. A trivial example of the use of such annotations is the mypy in-process API itself:
As illustrated by the example, static typing can be applied where appropriate, in this case in the signature of the run function, since that is the part of the API module that can be seen from the outside by other developers. If anyone misinterprets the parameter types or the return type of the API, mypy will generate a clear error message, referring to the file and line number where the mismatch occurs.
The concept of dynamic typing remains central to languages like Python and JavaScript, because it allows for flexible data structures and helps to reduce the amount of source code needed to perform a certain task. Source code size is important, because to understand and maintain source code, the first thing that has to happen is to read through it. In that sense, 100 kB of Python source code offers a direct advantage over 300 kB of C++ source that has the same functionality, but without the hard to read type definitions using templates, explicit type inspection and conversion code, overloaded constructors and other overloaded methods, abstract base classes to deal with polymorphic data structures and type dependent branching.
For small scripts well below 100kB source code and written by one person, dynamic typing seems to only have advantages. Very little planning and design are needed; everything just falls into place while programming. But when applications grow larger and are no longer built by individuals but by teams, the balance changes. For such applications, featuring more than roughly 200kB source code, the lack of compile time type checking has the following consequences:
An interface featuring even one parameter that may refer to a complex, dynamically typed object structure, cannot be considered sufficiently stable to warrant separation of concerns. While this type of 'who did what, why and when' programming accounts for tremendous flexibility, it also accounts for design decisions being postponed to the very last, impacting large amounts of already written code, requiring extensive modifications.
The 'coupling and cohesion' paradigm applies. It's OK for modules to have strong coupling of design decisions on the inside. But between modules there should preferably be loose coupling, a design decision to change the inner workings of one module should not influence the others. In general, this leads to the following rules of the thumb for the choice between dynamic and static typing.
So while the current surge in static typing may seem like a regression, it isn't. Dynamic typing has earned its place and it won't go away. The opposite is also true: even a traditionally statically typed language like C# has absorbed dynamic typing concepts. But with the complexity of applications written in languages like JavaScript and Python growing, effective modularization, cooperation and unit validation strategies gain importance. Scripting languages are coming of age.
Why choose Python over JavaScript on the client?
Due to the immense popularity of programming for the web, JavaScript has drawn lots of attention and investment. There are clear advantages in having the same language on the client and on the server. An important advantage is that it becomes possible to move code from server to client in a late stage, when an application is upscaled.
Another advantage is unity of concept, allowing developers to work both on the front end and the back and without constantly switching between technologies. The desirability of decreasing the conceptual distance between the client and server part of an application has resulted in the popularity of a platform like Node.js. But at the same time, it carries the risk of expanding the 'one size fits all' reality of current web client programming to the server. JavaScript is considered a good enough language by many. Recent versions finally start to support features like class based OO (be it in the form of a thin varnish over its prototyping guts), modules and namespaces. With the advent of TypeScript, the use of strict typing is possible, though incorporating it in the language standard is probably some years away.
But even with these features, JavaScript isn't going to be the one language to end all languages. A camel may resemble a horse designed by a committee, but it never becomes one. What the browser language market needs, in fact what any free market needs, is diversity. It means that the right tool can be picked for the job at hand. Hammers for nails, and screwdrivers for screws. Python was designed with clean, concise readability in mind right from the start. The value of that shouldn't be underestimated.
JavaScript will probably be the choice of the masses in programming the client for a long time to come. But for those who consider the alternative, what matters to continuity is the momentum behind a language, as opposed to an implementation of that language. So the most important choice is not which implementation to use, but which language to choose. In that light Python is an effective and safe choice. Python has a huge mindshare and there's a growing number of browser implementations for it, approaching the golden standard of CPython closer and closer while retaining performance.
While new implementations may supersede existing ones, this process is guided by a centrally guarded consensus over what the Python language should entail. Switching to another implementation will always be easier than switching to the next JavaScript library hype or preprocessor with proprietary syntax to deal with its shortcomings. Looking at the situation in the well-established server world, it is to be expected that multiple client side Python implementations will continue to exist side by side in healthy competition. The winner here is the language itself: Python in the browser is there to stay.
Jacques de Hooge MSc is a C++/Python developer living in Rotterdam, the Netherlands. After graduating from the Delft University of Technology, department of Information Theory, he started his own company, GEATEC engineering, specializing in Realtime Controls, Scientific Computation, Oil and Gas Prospecting and Medical Imaging.He is a part-time teacher at the Rotterdam University of Applied Sciences, where he teaches C++, Python, Image Processing, Artificial Intelligence, Robotics, Realtime Embedded Systems and Linear Algebra. Currently he's developing cardiological research software for the Erasmus University in Rotterdam. Also he is the initiator and the lead designer of the Transcrypt open source project.
Visit link:
Transcrypt: Anatomy of a Python to JavaScript Compiler - InfoQ.com
- Isaiah Washington Says Sandra Oh Brought Him Back on Greys Anatomy Years After Firing - E! Online - April 27th, 2025 [April 27th, 2025]
- Hailey Bieber Is Outed as an Obsessive 'Greys Anatomy' Fan: It's 'a Big Secret' - People.com - April 27th, 2025 [April 27th, 2025]
- Unfurling Anatomy explores neuroplasticity and healing through artistic expression - 13wham.com - April 27th, 2025 [April 27th, 2025]
- Why isnt Greys Anatomy on TV tonight? When is the next new episode? - PennLive.com - April 27th, 2025 [April 27th, 2025]
- Why Greys Anatomy Isnt Airing a New Episode Tonight (April 24) & When Itll Return - Just Jared - April 27th, 2025 [April 27th, 2025]
- Greys Anatomy season 21 new episode tonight - How to watch on ABC for free - MassLive - April 27th, 2025 [April 27th, 2025]
- Anatomy of a US Treasury Sell-Off - AllianceBernstein - Commentaries - Advisor Perspectives - April 27th, 2025 [April 27th, 2025]
- Anatomy Of Lies Documentary: Everything To Know About The Grey's Anatomy Writer Who Faked Cancer (& Where To Watch Online) - Screen Rant - April 27th, 2025 [April 27th, 2025]
- 'Greys Anatomy' Star Katherine Heigl Slammed With Lawsuit For Alleged $300,000 Unpaid Services - Yahoo - April 27th, 2025 [April 27th, 2025]
- Grey's Anatomy's Isaiah Washington Says Sandra Oh Brought Him Back After Altercation with Patrick Dempsey - E! Online - April 27th, 2025 [April 27th, 2025]
- Why Arent 9-1-1, Doctor Odyssey & Greys Anatomy New Tonight? - The Sanford Herald - April 27th, 2025 [April 27th, 2025]
- 'Grey's Anatomy' Teases a Winston/Jules Pairing: Are You Feeling It? - TVLine - April 27th, 2025 [April 27th, 2025]
- Anatomy of a PMs fall: did Albanese stumble off a stage - and why are we still talking about it? - The Guardian - April 27th, 2025 [April 27th, 2025]
- Anatomy Of A Bitcoin Bear Market: Expert Trader Reveals The Signals To Watch Out For | Bitcoinist.com - Bitcoinist.com - April 19th, 2025 [April 19th, 2025]
- 'Grey's Anatomy' Recap: Are Winston Ndugu and Jules Millin the Next Power Couple at Grey-Sloan? - TV Insider - April 19th, 2025 [April 19th, 2025]
- Greys Anatomy Taps Piper Perabo for Three-Episode Arc Whats Her Connection to Amelia? - TVLine - April 19th, 2025 [April 19th, 2025]
- The anatomy of an NPR headline - VPM - April 19th, 2025 [April 19th, 2025]
- Anatomy of the system: Criminal case is finally (almost) over - nrtoday.com - April 19th, 2025 [April 19th, 2025]
- Grey's Anatomy Season 21, Episode 15 Review: Im Glad The Characters Are Showing Off Their Silly Sides In The Shows Funniest Episode In A Long Time -... - April 19th, 2025 [April 19th, 2025]
- Jessie Buckley to Narrate Leah Hazards Novel The Anatomy of Us for Audible (EXCLUSIVE) - Variety - April 19th, 2025 [April 19th, 2025]
- Ellen Pompeo reveals why shell never leave Greys Anatomy for good: It doesnt make any sense - New York Post - April 19th, 2025 [April 19th, 2025]
- Greys Anatomy season 21 episode 15: Where to watch free tonight - MassLive - April 19th, 2025 [April 19th, 2025]
- Ellen Pompeo says leaving 'Grey's Anatomy' would mean that others get to 'profit' off her hard work - Business Insider - April 19th, 2025 [April 19th, 2025]
- Ellen Pompeo on Why It Would Make No Sense to Walk Away From Greys Anatomy - Rolling Stone - April 19th, 2025 [April 19th, 2025]
- In the Human Anatomy Lab, Experiential Learning Prepares Future Health Care Leaders - U of G News - April 19th, 2025 [April 19th, 2025]
- Window washers platform crashes into hospital: How to watch Greys Anatomy without cable - PennLive.com - April 19th, 2025 [April 19th, 2025]
- Riley Greene, Colt Keith and the anatomy of a slump - The Athletic - The New York Times - April 19th, 2025 [April 19th, 2025]
- Ellen Pompeo reveals she gets a little bit annoyed when Greys Anatomy fans call her Meredith - The Independent - April 19th, 2025 [April 19th, 2025]
- Revisiting the 20-Year History of the Music of Greys Anatomy - Shondaland - April 19th, 2025 [April 19th, 2025]
- Yellowstone Star Piper Perabo Joins the Cast of Greys Anatomy in Recurring Role - EntertainmentNow - April 19th, 2025 [April 19th, 2025]
- Seriously? Greys Anatomy Is Making Us Take Sides, and It Feels Like [Bleep] - TVLine - April 19th, 2025 [April 19th, 2025]
- Ellen Pompeos honest reason for never leaving Greys Anatomy branded weird - The Independent - April 19th, 2025 [April 19th, 2025]
- The body as a manifesto: Schiaparellis use of anatomy - HIGHXTAR. - April 19th, 2025 [April 19th, 2025]
- Ellen Pompeo reveals one frustration with Grey's Anatomy fans: "I do get a little bit annoyed" - Digital Spy - April 19th, 2025 [April 19th, 2025]
- On Set: Greys Anatomy Stars Sharing Their Hidden Talents - Shondaland - April 19th, 2025 [April 19th, 2025]
- Anatomy of a Shot | The Gorge: Building the Blast - DNEG - April 19th, 2025 [April 19th, 2025]
- The countries with longest anatomy measurements (7+ inches) and what this means for your health - Journe Mondiale - April 10th, 2025 [April 10th, 2025]
- 21 "Grey's Anatomy" Behind-The-Scenes Facts That'll Make You Watch The Show In A Whole New Way - BuzzFeed - April 10th, 2025 [April 10th, 2025]
- Anatomy of Exile by Zeeva Bukai reflects on the elusive nature of home - jweekly.com - April 10th, 2025 [April 10th, 2025]
- Sex toys and exploding cosmetics: Anatomy of a 'hybrid war' on the West - Reuters - April 10th, 2025 [April 10th, 2025]
- Doctor Odyssey Has Higher Ratings Than Grey's Anatomy, So Why Was It At The Risk Of Being Canceled When Shonda Rhimes' Show Was Already Renewed -... - April 10th, 2025 [April 10th, 2025]
- Anatomy of a housing proposal toppled by NIMBYs - The Portland Press Herald - April 10th, 2025 [April 10th, 2025]
- The Anatomy of a New Distribution Branch - Roofing Contractor - April 10th, 2025 [April 10th, 2025]
- 'Grey's Anatomy' Is Returning for Season 22: Get the Scoop - TV Insider - April 10th, 2025 [April 10th, 2025]
- Greys Anatomy: Has Owen Broken the Open Relationship Rules Already? - TV Insider - April 10th, 2025 [April 10th, 2025]
- Greys Anatomy Season 21, Episode 13 Review: Im More Excited Than Ever For The Last 5 Episodes Thanks To A Few Storyline Advancements - Screen Rant - April 10th, 2025 [April 10th, 2025]
- 'Grey's Anatomy': Teddy Makes a Tearful Admission as She and Owen Navigate Their Open Marriage - People.com - April 10th, 2025 [April 10th, 2025]
- Greys Anatomy, Shifting Gears Among Five ABC Renewals, Doctor Odyssey in Limbo - hollywoodreporter.com - April 10th, 2025 [April 10th, 2025]
- Effect of Virtual Reality Simulation on Anatomy Learning Outcomes: A Systematic Review - Cureus - April 10th, 2025 [April 10th, 2025]
- Greys Anatomy Renewed For Season 22 By ABC With Veteran Cast Poised To Return - Deadline - April 10th, 2025 [April 10th, 2025]
- Grey's Anatomy: Kim Raver Talks Teddy and Owen's Open Marriage - Us Weekly - April 10th, 2025 [April 10th, 2025]
- Greys Anatomy: Sophia Bush Discusses Cass And Teddys Long-Awaited Tryst & Whether Theres More To Come Between Them - Deadline - April 10th, 2025 [April 10th, 2025]
- 9-1-1, Greys Anatomy, The Rookie, Shifting Gears, Will Trent Renewed at ABC - Variety - April 10th, 2025 [April 10th, 2025]
- 7 Times the Greys Anatomy Surgeons Did the Impossible - Shondaland - April 10th, 2025 [April 10th, 2025]
- Grey's Anatomy Is Bound To Repeat A Controversial George Plot From 18 Years Ago (But With A Twist) - Screen Rant - April 10th, 2025 [April 10th, 2025]
- Ellen Pompeo Reveals The Exact Moment Her Daughter Stopped Watching 'Grey's Anatomy' - HuffPost - April 10th, 2025 [April 10th, 2025]
- Anatomy Of A Market Crisis: Tariffs, Markets And The Economy - Seeking Alpha - April 10th, 2025 [April 10th, 2025]
- Pulse Bosses on Danny and Xanders Messy Power Dynamic, Greys Anatomy Comparisons and Season 2 Plans - Variety - April 10th, 2025 [April 10th, 2025]
- Bare Anatomy parent Innovist raises Rs 136 crore from ICICI Venture, others - The Economic Times - April 10th, 2025 [April 10th, 2025]
- T.R. Knight Was 'Scared' to Film Meredith and George's 'Humiliating' Grey's Anatomy Sex Scene (Exclusive) - People.com - April 10th, 2025 [April 10th, 2025]
- "Thats My Home": Ellen Pompeo Reveals Whether She Has Plans To Exit 'Grey's Anatomy' for Good - Collider - April 10th, 2025 [April 10th, 2025]
- TVs Current Medical Dramas, Ranked: Our Diagnoses for The Pitt, Watson, Doc Greys Anatomy and More - TVLine - April 10th, 2025 [April 10th, 2025]
- Anatomy of a Market Crisis: Tariffs, Markets and the Economy - Investing.com - April 10th, 2025 [April 10th, 2025]
- Who Will Save Greys Anatomy Now That Ellen Pompeo Is Gone? - The Daily Beast - April 10th, 2025 [April 10th, 2025]
- 19 Most Memorable (and Heart-Wrenching!) 'Grey's Anatomy' Episodes of All Time - PEOPLE - March 30th, 2025 [March 30th, 2025]
- 16 stars you forgot were on Grey's Anatomy before their big break (including future Oscar nominees) - Entertainment Weekly News - March 30th, 2025 [March 30th, 2025]
- "I Cried When He Died": Shonda Rhimes Is Still Deeply Impacted By Killing One Grey's Anatomy Character - Screen Rant - March 30th, 2025 [March 30th, 2025]
- See the Best Greys Anatomy Behind-the-Scenes Photos to Celebrate 20 Years of the Medical Drama - PEOPLE - March 30th, 2025 [March 30th, 2025]
- Katherine Heigl, Jeffrey Dean Morgan reunite to talk Grey's Anatomy , from Denny's death to ghost sex - Entertainment Weekly News - March 30th, 2025 [March 30th, 2025]
- Sandra Oh Is Changing Her Tune on a Potential Return to 'Grey's Anatomy' - PEOPLE - March 30th, 2025 [March 30th, 2025]
- The Scrapped Grey's Anatomy Spin-Off Would Have Ruined The Show's Best Characters - SlashFilm - March 30th, 2025 [March 30th, 2025]
- Anatomy of a flood: The Derna tragedys lessons for Libyan governance - Brookings Institution - March 30th, 2025 [March 30th, 2025]
- 19 Years Later, Shonda Rhimes Still Isnt Over This Greys Anatomy Death (and Neither Are We) - Collider - March 30th, 2025 [March 30th, 2025]
- The perfect palliative balm of Greys Anatomy - Financial Times - March 30th, 2025 [March 30th, 2025]
- 15 Behind-the-Scenes Facts You Didn't Know About Grey's Anatomy, 20 Years After It Premiered - MSN - March 30th, 2025 [March 30th, 2025]
- I Have Zero Endings: Shonda Rhimes Has No Idea How (or When) Greys Anatomy Will End - Collider - March 30th, 2025 [March 30th, 2025]
- My Only Allegiance Is to the Story: Shonda Rhimes Explains Why Shes Killed So Many Beloved Greys Anatomy Characters - Collider - March 30th, 2025 [March 30th, 2025]
- 'Grey's Anatomy' star Ellen Pompeo says $20 million salary brings 'true independence': 'I don't have to do anything I don't want to do' - CNBC - March 30th, 2025 [March 30th, 2025]
- 'I love your song from "Grey's Anatomy"': How the ABC medical drama's soundtrack changed these artists' musical careers - Yahoo... - March 30th, 2025 [March 30th, 2025]
- Shonda Rhimes On The 'Grey's Anatomy' & 'Scandal' Spinoffs That Never Materialized: "We Thought About A Lot Of Things" - Deadline - March 30th, 2025 [March 30th, 2025]