Cross-platform

Релиз Haxe 2.09

В субботу 14 апреля на конференции WWX в Париже Николя Канасье объявил о релизе новой версии Haxe 2.09

Отдельно отмечается, что начиная с этой версии, Haxe включает сервер компиляции. Это возможность для создателей IDE и плагинов, улучшить как скорость компиляции так и скорость автоматических подсказок при написании кода на Haxe. (подробнее)

Также представлено много улучшений в языке и в целевых платформах, оптимизаций и новых библиотек, таких как:

  • новые пакеты sys.io и sys.net + класс высшего уровня Sys
  • Reflect.getProperty/setProperty
  • кроссплатформенные haxe.Json and haxe.Utf8
  • source mapping для отладки haxe->JS и --js-modern (подробнее о том, что такое source maps для html5)
  • поддержка Flash 11.2 and 11.3 + @:sound и @:file
  • серьезное улучшение скорости работы автодополнения
  • ... и другие изменения

Релиз NME 3.2

Вышла новая версия NME - 3.2.
Среди новых фич есть довольно вкусные, за что спасибо неугомонному Джошуа Гранику, который в последнее время стал просто главным двигателем haXe движения.

  • Добавлена встроенная поддержка SWF ассетов (Flash и целевые платформы на C++ ) Подробнее
  • Android приложения будут ставиться сразу на SD карту по умолчанию.
  • Улучшена поддержка специальных папок для всех целевых платформ
  • Пофиксили проблемы с "исчезающими объектами" при программном рендеринге.
  • Поддержка “template” файлов, перезаписывающих шаблоны по умолчанию для каждой цели.
  • URLLoader теперь поддерживает HTTP POST и SSL в целях основанных на C++.
  • Tilesheet.drawTiles теперь можно пользоваться и в Flash.
  • Поддержка джойстика для Windows, Mac and Linux.
  • Улучшена тесселяция для примитивов при аппаратном рендеринге.
  • Стало возможно добавлять дополнительные iOS фреймворки через NMML.
  • Исправили автоматическую ориентацию экрана в iOS.
  • Множество других исправлений и улучшений.

Релиз моего порта Flixel

Привет всем!
Последний месяц я в свободное время занимался допиливанием порта Flixel v2.55 (движка для создания 2d-игр) на haxe. Отличительной особенностью этого порта является его ориентация на кроссплатформенность (flash и c++). Специально для этого была переработана система рендеринга (для c++), которая теперь использует метод drawTiles().
Репозиторий проекта находится здесь: https://github.com/Beeblerox/HaxeFlixel. Там же лежит порт Mode demo.

Релиз Nme 3.1

- куча исправлений
- сборка для html5 "из коробки"
- новое апи с проверкой типов ассетов nme.Assets
- поддержка нативных расширений
- команда nme setup для установки всего дополнительно необходимого для сборки проектов (например nme setup webos)
- поддержка сертификатов для android market (раньше приложение можно было подписать только отладочным ключом)
- nme.net.SharedObject для всех платформ
и многое другое

всем использующим рекомендуется сделать haxelib upgrade

Релиз haXe 2.08

Вышел haXe 2.08!
Это будет последний релиз в ветке 2.*. Следующий релиз, который пока планируется на весну 2012 будет уже называться haXe 3.0.

Что нового в haXe 2.08:

  • Серьезные улучшения в качестве получаемого js-кода в haxe -> JavaScript. (а для тех, кого и в нем что-то не устроит возможность написать собственный js-генератор с помощью макросов)
  • js.JQuery теперь стал частью стандартной библиотеки. С помощью нового тега метаданных @:overload в нем поддерживается полностью типизированный доступ.
  • весь новый API Flash Player 11 теперь доступен, с высокоуровневым haXe доступом к 3D шейдерам через HxSL а также теперь можно напрямую включать растровые изображения с помощью :
    @:bitmap("file.png") class File extends flash.display.BitmapData {}
  • два новых API для разработки на стороне сервера: URL Dispatcher и новая версия SPOD позволяющая напрямую писать SQL как haXe выражения (см. SPOD Macros)
  • множество улучшений в Макросах

Релиз NME 3.0 и HXCPP 2.08 на haxelib

Важный релиз: на haxelib обновились версии библиотек NME и HXCPP.
Особенно важен релиз NME 3.0. Главное новшество там - встроенный "install-tool" который позволяет легко собирать проекты с одним базовым кодом для разных платформ - от flash до iOS и Android. Подробнее об этом можно почитать здесь: http://haxe.ru/nme-gm2d-setup, несколько ссылок по теме я насобирал здесь: http://haxe.ru/node/338
И еще у NME недавно появился офсайт: http://haxenme.org/ там пока немного информации, но все коротко и ясно для старта.

NME - gm2d - Android - iOS... Настройка среды для кросс-платформенной разработки

Внимание! На момент эта статья уже не актуальна для тех, кто хочет просто установить стабильную версию и начать ей пользоваться. Сейчас всё гораздо проще.
Эта инфа теперь может пригодиться тем, кто хочет устанавливать и собирать версию из СВН или тем, кто хочет чуть глубже разобраться от каких мучений их избавил install-tool который сейчас входит в NME.

Публикую плоды своих изысканий и тестов настройки среды для создания кросс-платформенных проектов на haXe, позволяющих собирать из одного кода приложения для Android, iOS, webOS и конечно стандартных для haXe flash, c++ ...
Основано в основном на статьях с http://gamehaxe.com и на собственном опыте. На момент поставил такую среду на двух машинах и успешно собираю приложения для Android. В iOS тоже собираю, но с ним не всё так гладко пока.
В общем делюсь тем, с чем успел разобраться сам. Итак поехали:

  1. Если вдруг кто еще не поставил, качаем и ставим haXe: http://haxe.org/download
  2. Ставим hxcpp, nme, gm2d через haxelib:
  3. в консоли:

    haxelib install hxcpp
    haxelib install nme
    haxelib install gm2d

    эти первые два шага идентичны и для установки на Mac и на Linux (на Mac нужно еще запустить @haxelib setup@ перед установкой либ)
    дальше то, что связано с компиляций C++ нужно смотреть для каждой отдельной платформы

  4. качаем и ставим VisualStudio C++ Express. Она нужна hxcpp для компиляции сгенеренного C++ кода
  5. Update: Всё! Новые версии NME и HXCPP вышли на haxelib. так что остальную часть этого раздела можно уже не читать, а переходить сразу к настройке и сборке проекта.

Ссылки по NME и install tool

Сюда сбрасываю последние ссылки связанные c NME, о его установке, настройке и компиляции для Andriod и iOS. Надо в этом деле разобраться. Приглашаю интересующихся темой присоединяться.

NME - gm2d - Android - iOS... Настройка среды для кросс-платформенной разработки
(по-русски, 16.08, я;))

http://www.joshuagranick.com/blog/2011/08/19/haxe-nme-screencast-is-now-... - Haxe NME Screencast (Joshua Granick)

http://www.joshuagranick.com/blog/2011/07/14/android-ios-webos-and-more-... - (Joshua Granick) - 14 июля
http://lists.motion-twin.com/pipermail/haxe/2011-July/045405.html - Update on the install tool (Joshua Granick) - 13 июля

Новости прошедшей недели

Как все уже знают, на прошлых выходных состоялась конференция haxecon, в рамках которой обсуждались вопросы о текущем положении и будущем данной платформы. Докладов было немного, но все они довольно интересны.
Первоначально планировалось, что будет осуществляться вещание с конференции, но из-за возникших проблем с доставкой оборудования это оказалось невозможным. К счастью были сделаны видеозаписи докладов, а сегодня они стали доступны здесь.

Полиморфные функции. Библиотека. Версия 1.0

Библиотека реализующая полиморфные функции. Инструкция по установке и использованию:

haxelib install PolymorphFunction

Во FlashDevelop создаем проект, например haXe/Flash:

Заходим Project -> Properies -> Compiler Options -> Libraries
добавляем туда строчку PolymorphFunction

package ;

import flash.Lib;

enum MyEnum {q; w; e;}

class Main
{
        static var myfunc:Dynamic = PolymorphFunction.parse([
                function(a:Int, b:Int) { return a + b; },
                function(a:Int, b:Int, c:Int) { return a + b + c; },
                function(value:String) { return "Hello, " + value + "!"; },
                function(first:Float, two:String) { return Std.string(first) + " -> " + two; },
                function(p1:{ x:Int, y:Int }, p2:{ x:Int, y:Int } ){return { x:p1.x + p2.x, y:p1.y + p2.y };},
                function(arr:Array<Dynamic>) { return "This is Array<Dynamic>"; },

haXe 2.07

Новая стабильная версия haXe - 2.07 опубликована и доступна для скачивания / обновления.

Самые важные изменения :
- макросы : http://haxe.org/manual/macros - другие источники информации: http://ncannasse.fr/blog/haxe_got_macros,
- flash9 API обновлен до совместимости с версиями flash player 10.1 и 10.2
- избавление от неиспользуемых функций на этапе компиляции с помощью --dead-code-elimination
- flash9: исправлена загрузка другого haXe SWF
- большое увеличение скорости компилятора для внутреннего автодополнения
- чистка, благодаря которой обеспечен более аккуратный и читаемый вывод JS/CPP/PHP
- собственный генератор js кода : макросы могут быть использованы в частности для написания собственного js - генератора, см. haxe/std/haxe/macros/DefaultJSGenerator для примера

Полиморфные функции. Удобный класс

Я написал класс полиморфных функций и решил поделится. Чтобы понять как задается сигнатура, рекомендую посмотреть http://haxe.ru/node/274

package;
import Type;
/**
 * ...
 * @author Mr.Cheater
 */

 
class PolymorphFunction
{
        static public function create(args:Array<Array<Dynamic>>)
        {
                var hashTable = new Hash<Dynamic>();
                for (i in args) hashTable.set(Std.string(i[0]), i[1]);
                return Reflect.makeVarArgs(function (args:Array<Dynamic>):Dynamic
                {
                        return Reflect.callMethod(null, hashTable.get({
                                var signature = new Array<String>();
                                for (i in args) signature.push(Std.string(Type.typeof(i)));
                                Std.string(signature);
                        }), args);
                });
        }
}

class Main
{
        static var myfunc:Dynamic =  PolymorphFunction.create([
                //The addition of 2 Ints
                [[ValueType.TInt, ValueType.TInt],
                function(a:Int, b:Int)
                {
                        return a + b;
                }]
                ,

Релиз Eclihx 0.3.0

Опубликован новый релиз Eclihx 0.3.0 - IDE для программирования на haXe, на основе Eclipse.
Автор - Николай Красько пригласил всех haxe-разработчиков к тестированию новой версии.

Полный список возможностей Eclihx 0.3.0:

  • Навигатор по проектам
  • Автодополнение в haXe коде (с опцией haxe --display).
  • Установка путей для автодополнения и библиотек в hxml-файле
  • Сборка проекта с hxml-файлом.
  • Простая навигация по расположению ошибок при сборке.
  • Подсветка синтаксиса и форматирование haxe кода.

Дайджест: Ressy, Stax, Hydrax, Flixel-Haxe

Очередной небольшой дайджест новых и не очень библиотек для haXe:

Ressy - менеджер ресурсов для haXe.
Позволяет получать доступ к ресурсам по аналогии с [Embed] в AS3 используя loader mode (для загрузки внешних ресурсов) или embed mode (для внедрения ресурсов в swf)
http://github.com/alijaya/ressy

Stax
Stax это новая стандартная библиотека для haXe созданная для разработчиков, которые предпочитают декларативное программирование и для которых скорость разработки важнее чем размер программы и ее скорость.
http://github.com/jdegoes/stax

RSS-материал