📰 Title: | Haxe | 🕹️ / 🛠️ Type: | Tool |
---|---|---|---|
🗃️ Genre: | Development | 🚦 Status: | 04. Released (status) |
🏷️ Category: | Development ➤ Programming language | 🌍️ Browser version: | |
🔖 Tags: | Development; Programming Language; Haxe; Flash; Java; PHP; C/C++; C#; Python; Lua; Godot engine | 📦️ Package Name: | haxe |
🐣️ Approx. start: | 2003-06-11 | 📦️ Arch package: | |
🐓️ Latest: | 2023-04-06 | 📦️ RPM package: | |
📍️ Version: | Latest: 4.3.0 / Dev: 50a980e | 📦️ Deb package: | |
🏛️ License type: | 🕊️ Libre | 📦️ Flatpak package: | |
🏛️ License: | GPL-2+, BSD, MIT, LGPL-2+ | 📦️ AppImage package: | |
🏝️ Perspective: | Third & First person | 📦️ Snap package: | |
👁️ Visual: | 2D & 3D | ⚙️ Generic binary: | |
⏱️ Pacing: | Real Time | 📄️ Source: | |
👫️ Played: | Single & Multi | 📱️ PDA support: | |
🎖️ This record: | 🕳️ Not used: | ||
🎀️ Game design: | 👫️ Contrib.: | goupildb & Louis | |
🎰️ ID: | 14082 | 🐛️ Created: | 2013-12-05 |
🐜️ Updated: | 2023-04-17 |
[en]: | A libre and multi-platform programming language allowing to produce JavaScript, C++, C#, Java, JVM, Python, Lua, PHP and Flash code, and to give access to the native capabilities of each platform. It has its own VMs (HashLink & NekoVM) but can also run in interpreted mode. It provides a standardized language, a standard library (working in the same way whatever the platform) and platform specific libraries. The underlying idea is to let the developer choose the best platform for a given job. | [fr]: | Un langage de programmation libre et multi-plateforme permettant de produire du codeJavaScript, C++, C#, Java, JVM, Python, Lua, PHP et Flash, et de donner accès aux capacités natives de chaque plateforme. Il dispose de ses propres VM (HashLink & NekoVM) mais peut également fonctionner en mode interprété. Il fourni un langage standardisé, une bibliothèque standard (fonctionnant de la même manière quelque soit la plateforme) et des bibliothèques spécifiques aux plateformes. L'idée sous-jacente est de laisser le développeur choisir la meilleure plateforme pour un travail donné. |
---|
🦝️ From Users: (202005), [fr](202005),
💎 Features: (202301),
🕯️ How To: (202007), (201703), [fr](202005),
🎮️ Showcase: Dead Cells (created with Heaps) (201807), 2 weeks, coding in HAXEDEVELOP IDE (202001),
🏡️ Website & videos
[Homepage] [Dev site] [Features/About] [Screenshots] [Videos pv(4.2.0/202103) ft(202301) t(202xxx) ts(202xxx) gd(202xxx) gu(202005) gu[fr](202005) id(202xxx) r(202xxx) lp(202xxx) d(202001) ht(202007) ht(201703) ht(201811) ht[fr](202005) ht[de](202xxx) ht[ru](202xxx) ht[pl](202xxx) ht[cz](202xxx) ht[sp](202xxx) ht[pt](202xxx) ht[it](202xxx) ht[tr](202xxx)] [WIKI] [FAQ] [RSS] [Changelog 1 2 3]
💰 Commercial: [Support their work (Donate)]
🍩️ Resources
• Haxe (Try Haxe on line): [Haxe (Haxe on line)]
• HaxeFlixel(Haxe+OpenFL+Flixel=HaxeFlixel, a libre framework for developing 2D games, see also our entry, MIT): [HaxeFlixel] gu(202108) d(201511) d(201801) d(201503)
• Heaps(a mature cross platform graphics engine, see also our entry, MIT): [Heaps] [Dev site] gu(201903) tl(201806) d(201807)
🛠️ Technical informations
[Open Hub] [PCGamingWiki] [MobyGames]
🐘 Social
Devs (Haxe Foundation 1 2 3 [fr] [en]): [Site 1 2] [Chat] [mastodon] [twitter] [PeerTube] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
Devs (Nicolas Cannasse (ncannasse) [fr] [en]): [Site 1 2] [Chat] [mastodon] [twitter] [PeerTube] [YouTube] [PressKit] [Interview 1(202008) 2(201507) 3[fr](201505)]
The Project: [Blog] [Forums] [mastodon] [twitter] [Facebook] [PeerTube] [YouTube] [PressKit] [reddit] [Discord]
🐝️ Related
[Wikipedia (Haxe) [fr] [en] [de]]
📦️ Misc. repositories
[Repology] [pkgs.org] [Arch Linux / AUR] [openSUSE] [Debian/Ubuntu] [Flatpak] [AppImage] [Snap] [PortableLinuxGames]
🕵️ Reviews
[HowLongToBeat] [metacritic] [OpenCritic] [iGDB]
🕊️ Source of this Entry: [Site on Mastodon (date)]
🐘 Social Networking Update (on Mastodon)
🛠️ Title: Haxe
🦊️ What's: A libre programming language to produce JavaScript, C++, C#, Java, JVM, Python, Lua, PHP & Flash code
🏡️ https://haxe.org/
🐣️ https://github.com/HaxeFoundation/
🔖 #LinuxGameDev #ProgrammingLanguage #Haxe
📦️ #Libre #Bin #Arch #RPM #Deb
📖 Our entry: http://www.lebottindesjeuxlinux.tuxfamily.org/en/online/lights-on/
🥁️ Update: 4.3.0
⚗️ Code improvement 🚀️
📌️ Changes: https://github.com/HaxeFoundation/haxe/releases
🐘 From: https://social.tchncs.de/@distrowatch/110155852940497787
🦝️ https://invidious.lunar.icu/xePJU7HTNkg
💎 https://invidious.lunar.icu/yZnvLQ7-3jI
🎮️ https://invidious.lunar.icu/02G3GUt6Nzo
🎮️ https://invidious.lunar.icu/Z61xsyIS60k
🕶️ The Haxe language logo
Haxe is a libre and multi-platform programming language allowing to produce JavaScript, C++, C#, Java, JVM, Python, Lua, PHP and Flash code, and to give access to the native capabilities of each platform. It has its own VMs (HashLink & NekoVM) but can also run in interpreted mode. It provides a standardized language, a standard library (working in the same way whatever the platform) and platform specific libraries. The underlying idea is to let the developer choose the best platform for a given job.
📕🐧"A libre & multi-platform programming language allowing to produce JavaScript, C++, C#, Java, JVM, Python, Lua, PHP & Flash code"🐧📕
Haxe is an open source high-level strictly-typed programming language with a fast optimizing cross-compiler.
Haxe can build cross-platform applications targeting JavaScript, C++, C#, Java, JVM, Python, Lua, PHP, Flash, and allows access to each platform's native capabilities. Haxe has its own VMs (HashLink and NekoVM) but can also run in interpreted mode.
Code written in Haxe can be compiled to any target Haxe supports.
Haxe (pronounced as hex) is an open source programming language.
While most other languages are bound to their own platform (Java to the JVM, C# to .Net, ActionScript to the Flash Player), Haxe is a multiplatform language.
☑ When Haxe?
Haxe is useful in a wide variety of domains; games, web, mobile, desktop, command-line and cross-platform APIs. Take a look at who is using Haxe and explore the use cases.
☑ Games
Haxe is popular with game creators because it is fast, has many useful libraries, and can target iOS, Android, Web and Desktop easily.
☑ Web
Haxe gives you a powerful, type-safe language that can target JavaScript on the client and PHP, NodeJS or Neko on the server. Share code and APIs between the client and server seamlessly.
☑ Mobile
Share code between key platforms. Access native functionality without sacrificing performance.
☑ Desktop
Build cross platform desktop apps using WX Widgets, Node Webkit, Java Swing or custom UI libraries.
☑ Command Line
Take advantage of easy-to-use libraries to write powerful, cross platform CLI applications.
☑ Cross-Platform APIs
Write cross platform APIs in Haxe that can be exported and shared with other languages and environments.
☑ Open Source
Haxe is a reliable open source technology and is free to use. Become contributor on GitHub, join our community on our Discord chat and forum and find us on Facebook, Twitter and StackOverflow.
☑ Many libraries
Haxelib is the package manager for Haxe, which offers many free libraries powered by the Haxe community. Manage your project dependencies and distribute libraries.
🌍️ Wikipedia:
Haxe is an open source high-level cross-platform programming language and compiler that can produce applications and source code, for many different computing platforms from one code-base. It is free and open-source software, released under the MIT License. The compiler, written in OCaml, is released under the GNU General Public License (GPL) version 2.
Haxe includes a set of features and a standard library supported across all platforms, like numeric data types, strings, arrays, maps, binary, reflection, math, HTTP, file system and common file formats. Haxe also includes platform-specific API's for each compiler target. Kha, OpenFL and Heaps.io are popular Haxe frameworks that enable creating multi-platform content from one codebase.
Haxe originated with the idea of supporting client-side and server-side programming in one language, and simplifying the communication logic between them. Code written in the Haxe language can be compiled into JavaScript, C++, Java, JVM, PHP, C#, Python, Lua and Node.js. Haxe can also directly compile SWF, HashLink and NekoVM bytecode and also runs in interpreted mode.
Haxe supports externs (definition files) that can contain type information of existing libraries to describe target-specific interaction in a type-safe manner, like C++ header files can describe the structure of existing object files. This enables to use the values defined in the files as if they were statically typed Haxe entities. Beside externs, other solutions exist to access each platform's native capabilities.
Many popular IDEs and source code editors have support available for Haxe development. No particular development environment or tool set is officially recommended by the Haxe Foundation, although VS Code, IntelliJ IDEA and HaxeDevelop have most support for Haxe development. The core functionalities of syntax highlighting, code completion, refactoring, debugging, etc. are available to various degrees.
History
Development of Haxe began in October 2005. The first alpha version was released on November 14, 2005. Haxe 1.0 was released in April 2006, with support for Adobe Flash, JavaScript, and NekoVM programs. Support for PHP was added in 2008, and C++ was added in 2009. More platforms such as C# and Java were added with a compiler overhaul in 2012.
Haxe was developed by Nicolas Cannasse and other contributors, and was originally named haXe because it was short, simple, and "has an X inside", which the author asserts humorously is needed to make any new technology a success.
Haxe is the successor to the open-source ActionScript 2 compiler MTASC, also built by Nicolas Cannasse and is released under the GNU General Public License version 2 or later.
Compiler
The Haxe language can compile into bytecode that can be executed directly by the virtual machines it targets. It can compile to source code in C++, JavaScript, PHP, C#, Java, Python and Lua. Haxe also has an interpreter called eval. This same interpreter is also used compile-time to run macros, which allow modification of the AST.
This strategy of compiling to multiple source code languages is inspired by the write once, run anywhere paradigm. It also allows the programmer to choose the best platform for the job. Typical Haxe programs run identically on all platforms, but developers can specify platform-specific code and use conditional compilation to prevent it from compiling on other platforms.
The Haxe compiler is an optimizing compiler, and uses field and function inlining, tail recursion elimination, constant folding, loop unrolling and dead code elimination (DCE) to optimize the run-time performance of compiled programs. The Haxe compiler offers opt-in null-safety, it checks compile-time for nullable values.
Targets
(...)
Un langage de programmation libre et multi-plateforme, par la Haxe Foundation, initié par Nicolas Cannasse (ncannasse).
Haxe (prononcer hex) est un langage de programmation libre et multi-plateforme permettant de produire du codeJavaScript, C++, C#, Java, JVM, Python, Lua, PHP et Flash, et de donner accès aux capacités natives de chaque plateforme. Il dispose de ses propres VM (HashLink & NekoVM) mais peut également fonctionner en mode interprété. Il fourni un langage standardisé, une bibliothèque standard (fonctionnant de la même manière quelque soit la plateforme) et des bibliothèques spécifiques aux plateformes. L'idée sous-jacente est de laisser le développeur choisir la meilleure plateforme pour un travail donné.
Voir aussi / See also: A Super Mario Summary, Haxe, HaxeFlixel, OpenFL, Pixelizer,
Haxe est un langage de programmation de haut niveau à typage strict, open source, doté d'un compilateur multi plate-forme à optimisation rapide.
Haxe permet de créer des applications multi-plateformes ciblant JavaScript, C++, C#, Java, JVM, Python, Lua, PHP, Flash, et donne accès aux capacités natives de chaque plateforme. Haxe dispose de ses propres VM (HashLink et NekoVM) mais peut également fonctionner en mode interprété.
Le code écrit en Haxe peut être compilé vers n'importe quelle cible prise en charge par Haxe.
Haxe (prononcé comme hex) est un langage de programmation open source.
Alors que la plupart des autres langages sont liés à leur propre plateforme (Java à la JVM, C# à .Net, ActionScript à Flash Player), Haxe est un langage multi-plateforme.
☑ Pourquoi Haxe ?
Haxe est utile dans une grande variété de domaines : jeux, web, mobile, bureau, ligne de commande et API multi-plateformes. Découvrez qui utilise Haxe et explorez les cas d'utilisation.
☑ Les jeux
Haxe est populaire auprès des créateurs de jeux car il est rapide, possède de nombreuses bibliothèques utiles et peut cibler iOS, Android, le Web et les ordinateurs de bureau facilement.
☑ Web
Haxe vous offre un langage puissant et sûr qui peut cibler JavaScript sur le client et PHP, NodeJS ou Neko sur le serveur. Partagez le code et les API entre le client et le serveur en toute transparence.
☑ Mobile
Partagez le code entre les principales plateformes. Accédez aux fonctionnalités natives sans sacrifier les performances.
☑ Bureau
Créez des applications de bureau multi-plateformes à l'aide de WX Widgets, Node Webkit, Java Swing ou de bibliothèques d'interface utilisateur personnalisées.
☑ Ligne de commande
Tirez parti de bibliothèques faciles à utiliser pour écrire des applications CLI puissantes et multi-plateformes.
☑ API multi-plateforme
Écrivez des API multi-plateformes en Haxe qui peuvent être exportées et partagées avec d'autres langages et environnements.
☑ Source ouvert
Haxe est une technologie open source fiable et libre d'utilisation. Devenez contributeur sur GitHub, rejoignez notre communauté sur notre chat Discord et notre forum et retrouvez-nous sur Facebook, Twitter et StackOverflow.
☑ De nombreuses bibliothèques
Haxelib est le gestionnaire de paquets pour Haxe, qui offre de nombreuses bibliothèques gratuites créées par la communauté Haxe. Gérez les dépendances de votre projet et distribuez des bibliothèques.
🌍️ Wikipedia:
Haxe est le nom d'un langage de programmation, multi-paradigme, multi-plateforme, haut niveau et celui d'un compilateur utilisé pour produire des applications pour de nombreuses plates-formes différentes à partir d'un seul code source. C'est aussi le nom d'un logiciel gratuit et open source distribué sous la licence GPLv2. La bibliothèque standard est disponible sous la licence MIT.
Haxe inclut un ensemble de fonctions communes qui sont supportées sur toutes les plates-formes, tels que les types de données numériques, textuelles, tabulaires et binaires ainsi que certains formats de fichier communs. Haxe inclut aussi des interfaces de programmation (API) spécifiques à certaines plates-formes notamment pour Adobe Flash, C++, PHP.
Le code écrit dans le langage Haxe serait compilable "source à source" vers un script écrit en ActionScript3, JavaScript, Java, C++, C#, PHP, Python, Lua ou Node.js. On pourrait aussi utiliser Haxe pour produire ce qu'on appellerait du "small web format" (SWF) ou du "bytecode Neko" ou du "HashLink".
Les principaux utilisateurs d'Haxe incluent des développeurs chez les sociétés BBC, Coca-Cola, Disney, Hasbro, Mattel, Nickelodeon, Prezi, TiVo et Zynga. OpenFL (en) et Flambe [archive] sont des frameworks Haxe populaires permettant de créer du contenu multi-plateforme à partir d'un seul code source.
Architecture
Langage unifié
L'aspect le plus unique de l'architecture d'Haxe fut la décision du support de Flash, de JavaScript ainsi que des scripts côté serveur avec un langage unifié. Dans des projets de développement web traditionnels, les développeurs utilisent différent langages pour construire une application web intégré.
• PHP ou un autre langage côté serveur pour générer l'HTML
• JavaScript pour manipuler l'HTML côté client
• ActionScript pour des sections graphiques construites avec Flash
Haxe a pour origine de supporter tous ses aspects en un seul langage, et de simplifier la logique de communication entre eux. De ce fait, la logique de l'application n'a pas besoin de gérer l'implémentation de communications.
Les buts originaux de Haxe sont :
• Construire un langage plus puissant qu'ActionScript 2 et 3
• Être capable de facilement traduire une application d'ActionScript en Haxe
• Être capable d'utiliser ce langage pour Flash 6, 7, 8, et 9
• Être capable d'utiliser ce langage pour du JavaScript-Ajax
• Être capable d'utiliser ce langage pour de la programmation côté serveur à la place de PHP ou Java
Compilateur
Le compilateur est divisé en un frontal et en plusieurs backends. Le frontal crée un arbre syntaxique abstrait (AST) à partir du code source et effectue la vérification des types, l’expansion des macros et l'optimisation de l'AST. Les différents backends traduisent l'AST ainsi traité en code source ou bytecode selon leur cible.
Le compilateur est écrit en OCaml. Il peut être utilisé en mode serveur pour fournir la complétion du code pour les environnements de développement (IDE) ainsi que pour maintenir une mémoire cache afin d’accélérer la compilation.
Cible
En Haxe, les plates-formes supportées sont connus sous le nom de "cibles". Il s'agit de modules Haxe qui fournissent un accès aux API internes pour les parties backend du compilateur qui sont responsables de la génération du code ou bytecode correspondant.
• Les cibles bytecode produisent du bytecode exécutable (Neko, SWF, SWF8), pouvant être exécuté par un environnement d'exécution (Neko VM, Adobe Flash Player, Adobe AIR). L'API Haxe et les API spécifique à la plate-forme sont disponibles.
• Les cibles langages produisent du code source (AS3, C++, C#, Java). La plupart des codes sources doivent être compilés grâce à des compilateurs externes pour produire des fichiers exécutables (Flex SDK, GNU Compiler Collection (GCC), Microsoft Visual C++, Framework .NET, compilateur Java). Le code JavaScript et PHP peuvent être exécutés directement, puisque leur environnement d'exécution utilisent la compilation à la volée. Le code inline écrit dans le langage cible peut être inséré à tout moment dans l'application, impliquant le support de l'intégralité de l'API de la plate-forme; incluant des fonctionnalités manquantes de l'API Haxe.
• Les modules externes sont des définitions de type (extern class Haxe) décrivant les types d'une API ou bibliothèque native, de façon que le compilateur Haxe puisse utiliser la vérification de type statique.
Développement
Le développement d'Haxe a commencé en 2005. La première version béta fut disponible en février 2006. Haxe 1.0 est sortie le 17 mai 2006 avec le support des cibles Adobe Flash, JavaScript et Neko.
Haxe est le successeur du compilateur open-source MTASC (en) aussi créé par Nicolas Cannasse, et est disponible sous la licence GNU General Public Licence. La connaissance de l'OCaml n'est pas requise pour développer des applications grâce à Haxe.
Plates-formes supportées
(...)