После года работы Джаретт Биллингсли представляет абсолютно новую реализацию MiniD. Посмотрим что же изменилось:
Итак, что нового?
- на самом деле очень много
- Некоторые синтаксические изменения и дополнения для более чистого и лаконичного кода
- Классы и объекты претерпели существенные улучшения, благодаря путешествию в мир prototype-based ООП в течение года
- Больше метаметодов для лучшей кастомизации(?) собственных типов данных. К примеру доступ к данным-членам и вызовым методов теперь может быть перехвачен, и теперь доступен полный набор арифметических операторов для перегрузки (в том числе обратные - перегружающие не только a - b но и b - a, за подробностями обращаться в докуиментацию)
- “слабые” ссылки
- Новый тип который может представлять объекты классов D, для использования в нативном коде
- Тип integer использует 64 бита
- Значительно расширена и улучшена стандартная библиотека
- Намного более определенная семантика для языковых конструкций и операций
- Более гибкая система загрузки модулей
Что нового в реализации?
- Она нааааамного лучше старой. Это убийственное преимущество MiniD2
- Она имеет свой собственный сборщик мусора, что означает что ваши скрипты не будут больше запускать сборщик мусора всего приложения(хм, по крайней мере намного реже), и MiniD программы работают намного быстрее
- Совершенно новый API близкий к Lua и Squirrel API
- Теперь во многом оставлен только один способ для решения одной проблемы. Старая реализация и API были во многом неполные и непоследовательны. Теперь вы достаточно ограничены одним способом того как нужно делать это, что означает меньшие шансы на ошибку и гораздо меньше для запоминания.
- Практически все что можно сделать в MiniD можно сделать с помощью API. Новый API гораздо более полный.
- С точки зрения производительности MiniD разбивает на голову Python, хотя по правде говоря разница не так уж и велика. Я точно не могу судить о производительности по сравнению с Lua, так как я не знаю способа измерить производительность Lua непосредственно изнутри(включая время запуска и компиляци), но в общем разница не так велика в большинстве случаев
Итак, что нужно для компиляции MiniD
- Tango, SVN revision 4048.
- - DMD 1.034 или старше, или аналог(гыы, аналогов не так уж и много))). LDC должен справиться с этим. GDC нет - юзеры Маков, извиняйте, заставьте Дэвида вернуться к работе над GDC
- Утилита для сборки, DSSS/rebuild или bu[il]d.
- Собственно MiniD. Доставайте версию из транка по адресу http://svn.dsource.org/projects/minid/trunk
Почему я называю это опытным релиз-кандидатом?
- некоторые аспекты библиотеки(биндинг-библиотеки, которая намного лучше чем была в MiniD 1, и в некоторой степени компилятор) не подвергались обильному тестированию и могут содержать ошибки. И я (Джаретт) всего лишь один человек с ограниченным временем, так что если вы начнете использовать его - это будет замечательно
- Некоторые разделы документации еще закончены(прим перев. - документация MiniD потрясающая, огромное спасибо за это Джаретту, он проделал огромную и интересную работу)
- Я не пробовал компилировать MiniD под Linux. Но по-крайней мере все работало месяц назад.
Что же осталось сделать до “официального” релиза?
- Время, то чего у меня не будет следующую неделю. Но после у меня будет целых 3 недели блаженства.
- Тестирование
- Закончить документацию
- Возможно небольшие изменения и дополнения