CrossBridge

Last updated
CrossBridge
Other namesProject Alchemy
Developer(s) Adobe Systems
Initial release2008;15 years ago (2008)
Repository
License Open-source
Website adobe-flash.github.io/crossbridge/   OOjs UI icon edit-ltr-progressive.svg

CrossBridge is an open-source toolset developed by Adobe Systems, that cross-compiles C and C++ code to run in Adobe Flash Player or Adobe AIR. [1] Projects compiled with CrossBridge run up to 10 times faster than ActionScript 3 projects. [2] [3] [4] [5] [6] CrossBridge was also known as "Alchemy" and the "Flash Runtime C++ Compiler", or "FlasCC". [7] [8] [9]

Contents

CrossBridge uses high-performance memory-access opcodes in the Flash Player (known as "Domain Memory") to work with in-memory data quickly. [10] CrossBridge uses the LLVM and GCC as compiler backends, in order to compile C++ code, optimize it, and transform it to run within AVM2 (ActionScript Virtual Machine 2). Programs built with CrossBridge are up to 10 times faster than normal ActionScript code, [4] [5] [6] but up to 2× to 10× slower than native C++ code. [11]

CrossBridge can generate Flash Player movies (.swf files), or Flash Libraries (.swc files), which can then be used by larger projects written in ActionScript 3 and compiled using the free Apache Flex SDK (formerly the Adobe Flex SDK). CrossBridge also uses the GPU-based 3D rendering acceleration present in Flash Player 11 (known as Stage3D). [12]

Using CrossBridge, Adobe ported OpenGL for use within Flash Player Stage3D and released it as an open-source project in 2012. [13] The Lua programming language (version 5.1) was also ported to run in Flash Player using CrossBridge, and released on Google Code. [14] CrossBridge-compiled projects also enabled running client-side digital signal processing in real-time, [15] including fast Fourier transform and Mexican hat wavelet transform.

History

In 2008, CrossBridge was released by Adobe as "Project Alchemy", on the Adobe Labs website. It enabled compilation of specially modified C++ projects to SWF, using the LLVM and GCC compilers. [7]

In 2012, in an attempt to monetize Flash Player, Adobe restricted use of the Stage3D and Domain Memory features of Flash Player under the "Premium Features" brand. The "Premium Features" were licensed for use and publishers were to pay royalties to Adobe for use of the same. [16] Project Alchemy was commercially released as the Flash Runtime C++ Compiler. [9]

In 2013, Adobe open-sourced the Flash Runtime C++ Compiler as CrossBridge, and released it on the GitHub code hosting website. [17] The "Premium Features" were also made free for use, and no longer required licensing or royalties. [18]

See also

Related Research Articles

<span class="mw-page-title-main">Adobe Flash</span> Deprecated multimedia platform used to add animation and interactivity to websites

Adobe Flash is a multimedia software platform used for production of animations, rich internet applications, desktop applications, mobile apps, mobile games, and embedded web browser video players.

Bytecode is a form of instruction set designed for efficient execution by a software interpreter. Unlike human-readable source code, bytecodes are compact numeric codes, constants, and references that encode the result of compiler parsing and performing semantic analysis of things like type, scope, and nesting depths of program objects.

<span class="mw-page-title-main">ActionScript</span> Object-oriented programming language created for the Flash multimedia platform

ActionScript is an object-oriented programming language originally developed by Macromedia Inc.. It is influenced by HyperTalk, the scripting language for HyperCard. It is now an implementation of ECMAScript, though it originally arose as a sibling, both being influenced by HyperTalk. ActionScript code is usually converted to byte-code format by a compiler.

<span class="mw-page-title-main">LLVM</span> Compiler backend for multiple programming languages

LLVM is a set of compiler and toolchain technologies that can be used to develop a frontend for any programming language and a backend for any instruction set architecture. LLVM is designed around a language-independent intermediate representation (IR) that serves as a portable, high-level assembly language that can be optimized with a variety of transformations over multiple passes. The name LLVM originally stood for Low Level Virtual Machine, though the project has expanded and the name is no longer officially an initialism.

<span class="mw-page-title-main">Apache Flex</span> Software development kit (SDK) for the development and deployment of rich web applications

Apache Flex, formerly Adobe Flex, is a software development kit (SDK) for the development and deployment of cross-platform rich web applications based on the Adobe Flash platform. Initially developed by Macromedia and then acquired by Adobe Systems, Adobe donated Flex to the Apache Software Foundation in 2011 and it was promoted to a top-level project in December 2012.

Adobe Flash Player is computer software for viewing multimedia content, executing rich Internet applications, and streaming audio and video content created on the Adobe Flash platform. It can run from a web browser as a browser plug-in or independently on supported devices. Originally created by FutureWave under the name FutureSplash Player, it was renamed to Macromedia Flash Player after Macromedia acquired FutureWave in 1996. It was then developed and distributed by Adobe Systems as Flash Player after Adobe acquired Macromedia in 2005. It is currently developed and distributed by Zhongcheng for users in China, and by Harman International for enterprise users outside of China, in collaboration with Adobe.

MTASC is an ActionScript 2.0 compiler written in the OCaml programming language by the company Motion Twin. It is free software and can be used alone or with other tools like swfmill to produce SWF files, which contain interactive multimedia content playable with the Flash Player. MTASC is also much faster than the Adobe Flash ActionScript compiler.

<span class="mw-page-title-main">Adobe AIR</span> Cross-platform runtime system for building rich web applications

Adobe AIR is a cross-platform runtime system currently developed by Harman International, in collaboration with Adobe Inc., for building desktop applications and mobile applications, programmed using Adobe Animate, ActionScript, and optionally Apache Flex. It was originally released in 2008. The runtime supports installable applications on Windows, macOS, and mobile operating systems, including Android, iOS, and BlackBerry Tablet OS.

Tamarin is a discontinued free software virtual machine with just-in-time compilation (JIT) support intended to implement the 4th edition of the ECMAScript (ES4) language standard. Tamarin source code originates from ActionScript Virtual Machine 2 (AVM2) developed by Adobe Systems, as introduced within Adobe Flash Player 9, which implements ActionScript 3 scripting language. ActionScript Virtual Machine 2 was donated as open-source to Mozilla Foundation on November 7, 2006, to develop Tamarin as a high-performance virtual machine, with the support from broad Mozilla community, to be used by Mozilla and Adobe Systems in the next generation of their JavaScript and ActionScript engines with the ultimate aim to unify the scripting languages across web browsers and Adobe Flash platform and ease the development of better performing rich web applications.

<span class="mw-page-title-main">Box2D</span>

Box2D is a free open source 2-dimensional physics simulator engine written in C++ by Erin Catto and published under the MIT license. It has been used in Crayon Physics Deluxe, Limbo, Rolando, Incredibots, Angry Birds, Tiny Wings, Shovel Knight, Transformice, Happy Wheels, and many online Flash games, as well as iPhone, iPad and Android games using the Cocos2d or Moscrif game engine and Corona framework.

<span class="mw-page-title-main">Adobe Flash Builder</span> Integrated development environment

Adobe Flash Builder is an integrated development environment (IDE) built on the Eclipse platform that speeds development of rich Internet applications (RIAs) and cross-platform desktop applications, particularly for the Adobe AIR platform. Adobe Flash Builder 4 is available in two editions: Standard and Premium.

Google Native Client (NaCl) is a discontinued sandboxing technology for running either a subset of Intel x86, ARM, or MIPS native code, or a portable executable, in a sandbox. It allows safely running native code from a web browser, independent of the user operating system, allowing web apps to run at near-native speeds, which aligns with Google's plans for ChromeOS. It may also be used for securing browser plugins, and parts of other applications or full applications such as ZeroVM.

<span class="mw-page-title-main">Away3D</span>

Away3D is an open-source platform for developing interactive 3D graphics for video games and applications, in Adobe Flash or HTML5. The platform consists of a 3D world editor, a 3D graphics engine, a 3D physics engine and a compressed 3D model file format (AWD).

Emscripten is an LLVM/Clang-based compiler that compiles C and C++ source code to WebAssembly, primarily for execution in web browsers.

<span class="mw-page-title-main">GraalVM</span> Virtual machine software

GraalVM is a Java Development Kit (JDK), written in Java. The open-source distribution of GraalVM is based on OpenJDK, and the enterprise distribution is based on Oracle JDK. As well as just-in-time (JIT) compilation, GraalVM can compile a Java application ahead-of-time so that it starts instantly, provides peak performance with no warmup, and uses fewer resources. It provides additional programming languages and execution modes. The first production-ready release, GraalVM 19.0, was distributed in May 2019. The most recent release is GraalVM for JDK 21, made available in September 2023.

<span class="mw-page-title-main">Flare3D</span>

Flare3D is a framework for developing interactive three-dimensional (3D) graphics within Adobe Flash Player, Adobe Substance and Adobe AIR, written in ActionScript 3. Flare3D includes a 3D object editor and a 3D graphics engine for rendering 3D graphics. Flare3D runs on current web browsers utilizing the Adobe Flash Player, and uses Stage3D for GPU-accelerated rendering. Flare3D has not been under active development since late 2014.

<span class="mw-page-title-main">Shumway (software)</span>

Shumway is a discontinued media player for playing SWF files. It was intended as an open-source replacement for Adobe Flash Player. It is licensed under Apache and SIL Open Font License (OFL). Mozilla started development on it in 2012. It was preceded by a failed earlier project called Gordon, a JavaScript library with a similar concept and name, which interprets SWF files with onboard resources of a browser via SVG conversion. These names are an allusion to Flash Gordon and Gordon Shumway.

Stage3D is an Adobe Flash Player API for rendering interactive 3D graphics with GPU-acceleration, within Flash games and applications. Flash Player or AIR applications written in ActionScript 3 may use Stage3D to render 3D graphics, and such applications run natively on Windows, Mac OS X, Linux, Apple iOS and Google Android. Stage3D is similar in purpose and design to WebGL.

<span class="mw-page-title-main">OpenFL</span>

OpenFL is a free and open-source software framework and platform for the creation of multi-platform applications and video games. OpenFL applications can be written in Haxe, JavaScript, or TypeScript, and may be published as standalone applications for several targets including iOS, Android, HTML5, Windows, macOS, Linux, WebAssembly, Flash, AIR, PlayStation 4, PlayStation 3, PlayStation Vita, Xbox One, Wii U, TiVo, Raspberry Pi, and Node.js.

References

  1. CrossBridge by Adobe, at GitHub
  2. "Alchemy:FAQ". Archived from the original on May 5, 2012. Retrieved May 5, 2012., Adobe Labs, "ASC performs few optimizations at this time"
  3. Zotov, Peter (2012-05-06). "Reaching the Limits of Adobe Stupidity – whitespace". Whitequark.org. Archived from the original on 2012-10-15. Retrieved 2012-10-27.
  4. 1 2 Alchemy:FAQ Archived May 5, 2012, at the Wayback Machine , Adobe Labs
  5. 1 2 Optimizing ActionScript Bytecode using LLVM, Adobe
  6. 1 2 Adobe Alchemy, is it ActionScript heresy? Archived 2012-08-19 at the Wayback Machine , Unit Zero One
  7. 1 2 Alchemy Released on Labs, Adobe Blogs, November 17, 2008
  8. Alchemy Updates Released on Labs, Adobe Blogs, December 11, 2008
  9. 1 2 Project “Alchemy” is now the Flash Runtime C++ Compiler (FlasCC), Adobe Blogs, October 8, 2012
  10. FlasCC for Flash Player, Adobe Gaming Archived May 25, 2013, at the Wayback Machine
  11. Alchemy Archived 2020-10-04 at the Wayback Machine , Adobe Labs
  12. XC APIs, Adobe Gaming Archived April 25, 2013, at the Wayback Machine
  13. OpenGL for Stage3D, GitHub project hosting
  14. lua-alchemy, Port of the Lua programming language for ActionScript using Alchemy, Google Code
  15. Real-time pitch detection in AVM2, Temptonik, January 2015
  16. Premium Features for Flash Player Archived 2014-07-19 at the Wayback Machine , Adobe Flash Team Blog, Adobe
  17. Open Source Flash C++ Compiler, CrossBridge Archived 2014-03-25 at the Wayback Machine , Adobe Blogs, June 25, 2013
  18. Adobe Premium Features for Flash Player, Adobe Devnet