Будет ли Haxe работать для создания библиотек? - PullRequest
9 голосов
/ 16 декабря 2010

Я думал об использовании Haxe для его мультиязычности, но не был уверен, что это лучше для этой задачи. Я собираюсь написать общую библиотеку, которая должна быть в состоянии использоваться на целевых языках и быть документированной (способной применять что-то вроде doxygen.). Другими словами, я хотел бы написать универсальную библиотеку на Haxe, вывести код на c ++ (и java, как только это будет сделано), и сделать его доступным для других программистов. лучший выбор для этой задачи, или было бы лучше, если бы я просто написал версию библиотеки для каждого языка?

Ответы [ 2 ]

7 голосов
/ 27 января 2011

Конечно, это возможно, хотя в зависимости от выбранной платформы может быть некоторая неловкость.

В JavaScript, neko и Flash сгенерированный код очень близок к нативному, и люди смогут использовать его.это даже не зная, что это было сгенерировано в Haxe.

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

На C ++, если вы не возражаете против небольшого шаблонного кода для включенияОтражение на работу, это будет работать в основном хорошо.У него нестандартный способ работы с конструкторами, а также вы должны быть очень осторожны, поскольку к нему прикреплен gc, и я не знаю, насколько хорошо он справляется с внешним кодом, содержащим ссылки, о которых он не знает.

О новых целях - C # и Java будут на 100% взаимодействовать с нативным кодом.Большинство функций Haxe сопоставлены с собственными возможностями платформ, за исключением делегатов.Но если вы не выставляете делегатов в своем интерфейсе, это нормально.Они также сгенерируют некоторый шаблонный код, чтобы обеспечить быстрое отражение на этих платформах, но будут способы отключить это, если вы знаете, что делаете.

3 голосов
/ 16 декабря 2010

Haxe не предназначен для написания кросс-языковых библиотек, хотя это можно сделать, и я видел несколько примеров того, как это работает:

  • polygonal , структура данных и физический движок, используемые в Haxe и AS3.
  • глагол , библиотека САПР на основе NURBS, которую можно использовать в Haxe и JS.
  • daff , библиотека для сравнения таблиц, используемая в JS, Python, Java, C #, C ++, Ruby и PHP.

Однако, в частности, для C ++, поскольку hxcpp генерирует много специфичных для Haxe вещей, включая GC, может потребоваться много очистки или нетривиально использовать. Вы можете спросить в списке рассылки Haxe.

...