Cross-platform

Константы и условная компиляция

Я глубоко убеждён, что константные типы недооцениваются разработчиками компиляторов и, как итог, разработчиками. Константы должны задавать не просто "неизменяемые" данные с удобным доступом, но и участвовать в прекомпиляции (условной компиляции).

Генерация номера сборки для проекта

Введение
В настоящее время, я работаю над проектом, одним из основных инструментов, в котором является язык haxe. В качестве среды разработки для haxe, в данном проекте, я использую FlashDevelop. В течение дня, проект собирается множество раз, и надо точно знать, какая сборка, сейчас, выложена в общий доступ. Для этого необходимо нумеровать сборки. Так как, ни в haxe, ни во FlashDevelop стандартного средства генерации номера сборки найдено не было, предлагаю для решения этой задачи, провернуть определённый трюк.

Трюк

Вышел haxe 2.04

26 июля вышел haXe 2.04. Основное нововведение - поддержка с++ (спасибо стараниям Хью Сандерсона http://gamehaxe.com/).
Основным преимуществом программ на с++ является высокая производительность. Плюс мы еще на шаг ближе к флэш-играм на iPhone http://gamehaxe.com/2009/07/28/haxe-iphone-cpp-at-last/.
Что необходимо для того, чтобы начать работать с новой платформой, можно почитать здесь http://blog.touchmypixel.com/2009/04/our-possible-haxe-c-plans/ (на английском).
http://ncannasse.fr/blog/haxe_2.04 - здесь создатель языка haXe показывает классический пример "Hello world" для с++.

Влияние Haxe

Haxe->flash странно на меня подействовал, пишу на php - не в своей стихии, пишу на haxe->javascript - не хватает многих вещей которые были под флэш платформу. Например, нельзя просто взять и сделать lib.current.addChild(someObj), вместо этого:

package classes;
import js.Lib;
import js.Dom;

class Logo
{
        public var displayObj:HtmlDom;
        public function new()
        {
                displayObj = Lib.document.createElement('div');
        }
}

А потом в main:
lib.document.appendChild(logo.displayObj);

hscript 1.4

Вчера стала доступна новая версия hscript с которым мы уже знакомились на страницах haXe.ru.

К имеющимся ранее возможностям/операторам в hscript теперь добавлены следующие:

  • new
  • оператор ...
  • шестнадцатеричные числа (hex)
  • try/catch : разрешён только один catch с типом "Dynamic"
  • throw

Мой доклад о haXe на 1й BAFPUG

Дело продвижения haXe живет. Сегодня в Минске состоялась первая встреча Belarusian Adobe Flash Platform User Group, на которой я сделал доклад по haXe.

Доклад, конечно, можно почитать на моем сайте.

haXe 2.0 вышел!

Посыпаю голову пеплом. Рост опередил нас с сообщением о том, что haXe 2.0 вышел. :)
Ничего не остаётся, как рассказать чуть подробнее о релизе.
Помимо самых основных, объявленных ранее нововведений, таких как возможность компиляции для новой платформы - PHP, капитальные изменения в haxe.remoting, значения параметров по умолчанию и пакет haxe.oi, в обьявлении о релизе haXe 2.0 Николя опубликовал полный список изменений, примерно в три раза больший чем список обычного релиза. На перевод всего ни времени ни понимания не хватает, так что выделю кратко, то, что показалось наиболее актуальным лично мне (если кому-то показались более важными другие вещи - комментарии к вашим услугам):

  • f9dynamic из flash9 теперь стал ключевым словом dynamic обязательным на всех платформах
  • ключевое слово override теперь тоже обязательно, ключа компилятора --override больше нет
  • flash9 API теперь соответствует flex3/flash player 9.0.115
  • поддержка haxe.Stack для flash9
  • добавлен haxe.TimerQueue, добавлен haxe.Timer.delay, убран haxe.Timer.delayed
  • добавлен haxe.Resource, разрешены бинарные данные в ресурсах
  • __resolve стал resolve (и может/должен теперь документироваться)
  • оптимизирован haxe.Md5
  • Neko VM обновилась до версии 1.7.1

И почти сразу за релизом начали поступать новости об обновлениях в связанных с haXe проектах:

hxpdf - библиотека для чтения PDF файлов в haXe

Похоже Николя решил перейти на выпуск одной новой библиотеки для haXe в неделю. :)
Только я написал про hscript, а он уже объявил о релизе hxpdf - новой небольшой библиотеки для чтения/обработки содержимого pdf-файлов в haXe. Библиотека кроссплатформенная, работает и для Flash9 и для Neko.

На данный момент hxpdf поддерживает только несколько основных функций:

  • парсит содержимое PDF файла
  • понимает шифрование (только версий 2.3 и 2.4)
  • понимает фильтр FlateDecode (zlib)

По словам Николя, этого достаточно, чтобы достать нужную информацию из большинства PDF документов.

Знакомьтесь, hscript (он же haXe Script)

Николя Канасье продолжает удивлять и вдохновлять, создавая новые проекты основанные на haXe и новые пути развития платформы и даря их сообществу. На этот раз очередным его подарком стал представленный в начале этой недели hscript - скриптовый движок или интерпретатор скриптов для haXe.

hscript (он же haXe Script) это динамически типизированный язык, который при этом содержит большинство выражений и базовых фич самого haXe:

  • константы (int,float,string)
  • идентификаторы
  • локальные переменные и правила областей видимости
  • блоки { ... }
  • выражения в скобках ( )
  • доступ к полям объекта
  • вызовы методов
  • бинарные и унарные операции
  • конструкции if / while / for / break / continue
  • выражения ++ и --

Раздел "Руководство по использованию haXe и Neko" понемногу растет

Раздел Руководство по использованию haXe и Neko понемногу растет. Добавлены небольшие примеры кода и статьи об особенностях haXe -- о локальных функциях и typedef.

haXe 2.0 на подходе

haXe 2.0 на подходе. Подробности тут.
haXe теряет обратную совместимость с версиями 1.*, избавившись от устаревшего и неиспользуемого функционала. Сделаны некоторые изменения в синтаксисе, полностью переписан пакет haxe.remoting, добавлен пакет haxe.io вместо neko.io. Удалены некоторые классы и методы.

Некоторые поклонники haXe уверены, что мозг Николаса многоядерный, с поддержкой многопоточности, и поэтому Николас может одной рукой работать над haXe 2.0, а другой рукой писать книгу об этом языке :)

Делегаты и callback

В качестве ещё одного сниппета не могу не рассказать и о callback.
Тем, кто только начинает знакомиться с haXe, это весьма полезное предложение может быть и не знакомо, т.к. до недавнего времени не упоминалось в документации.
Да и сейчас добраться до него не просто. Так что линк на статью про reserved keywords в главе мануала о классах будет уместен. В статье описывается сам принцип работы callback. Переведу самое основное...

ArrayAccess

Не помню уже было ли что-то подобное в AS. Может и было, просто я не пользовался.
Понадобилось сделать доступ к элементам некого списка, являющегося закрытым свойством класса, через его экземпляр и квадратные скобки. Решение оказалось очень простым...

RSS-материал