← All posts tagged AdaCore

OCTAGRAM
FOSS ada Идёт какая-то прямо неделя принятия моих наработок в открытые проекты

I've uploaded JVM-GNAT for macOS, see
Thanks to you, I could put inside Java API files.
В оригинале документация и примеры для JGNAT не была рассчитана на проекты GPR, была устаревшая система по типу Search Directories в Делфях или include path в C, а привязки, хотя и генерировались разные, но использовались только те, что подключены. А я сделал проект, и привязки тоже проектом, и пока пытался собрать проект привязок, повылезали ошибки в случаях, когда для абстрактного метода стояла pragma Import вместо pragma Export, а также конфликты имён в разном регистре, которые генератор привязок сам не переварил. По результатам разруливания для всех стандартных Java API есть рабочие привязки. Это и приняли.

Пакет (Binding) Ada2012 Unicode NCURSES под Windows
Тут пригодился мой шаблон проекта

Работа Ada Web Server Client TLS через прокси починена
OCTAGRAM
ada GNAT У AdaCore обновилась страница загрузки GNAT
На один дебилизм стало меньше. Раньше у них выбор начинался с года, а потом шли платформы. Если в каком-то году нет платормы, то её даже в списке не было. Потом сделали, чтоб было, но серого цвета. Это касается всяких экспериментальных платформ типа LEGO NXT MindStorm, на смену которому пришёл ARM для голых досок. А также JVM и CLI, которые кроме гуглострадальцев (AppEngine) оказались почти никому не нужны, когда есть нормальные (нативные) компиляторы. Если всё же хочешь скачать, перебирай разные года, пока не найдёшь нужный. Сейчас, если зайти в more platforms, все платформы в списке можно выбрать, и сам выбирается наибольший год выпуска.

Я бы ещё SPARK до 2012го года включительно отдельно выделял, потому что в старом СПАРКе аннотации для верификатора в комментариях специального вида пишутся, и это совместимо с, например, MapuSoft AdaMagic, BTC ObjectAda, BTC Apex Ada, Janus Ada, Irvine и пр. застрявшими между Ada 95 и Ada 2005, а аннотации SPARK 2014 пишутся в аспектах, которые поддерживает только GNAT. Понятно, что AdaCore не сильно заинтересованы в поддержке конкурентов.

Ещё заметил, что на страницу загрузки теперь можно попасть, не оставляя свой email.

Теперь, наверное, самым ожидаемым был бы кроссплатформенный пакетный менеджер с онлайн базой данных. Это было бы логичным продолжением линии развития gnatmake => gprmake => gprbuild+gprinstall. Даже в Делфи свой уже появился.
OCTAGRAM
ada AdaMagic Тяжело без документации. Вот, например, в конфиге для Win32 написано: ptr_align = 2. А что это такое? Это выравнивание указателя по двум байтам (???), по двойке во второй степени или номер какого-то режима? А какие ещё режимы? Или вот ищешь «offset_arith_type» и находишь в поиске зияющее ничего. А ведь конфиг EmScripten должен в чём-то отличаться. Там строгое выравнивание по 4м байтам. Как это выразить? В PDF от MapuSoft много такой информации не вошло. Там даже по аргументам утилит командной строки нет полной документации. Так, между прочим, напишут, что -ke заставляет сохранять сишные исходники, а -ga заставляет вставлять #line, чтоб установить соответствие между кодом на C и кодом на Ada. Также можно взглянуть в adacgen.exe и увидеть там внутри подряд все возможные ключи, но без их описания. И очень интересный вопрос, а чей это вообще компилятор. Ведь если знаешь, чей это компилятор, можно открыть Internet WayBack Machine, забить там адрес бывшего владельца, и, может быть, там обнаружатся PDF'ки, которые можно даже скачать. Строки "SofCheck AdaMagic" как бы намекают, что распутывать клубок надо оттуда. И, действительно, ещё в 2012м году можно увидеть страницу AdaMagic на сайте SofCheck. А потом SofCheck влился в AdaCore, но такого продукта, как AdaMagic, у них на сайте после этого не появилось. А вот ещё что я нашёл:
Intermetrics (now AverStar, Inc.)Там столько слияний, что чёрт ногу сломит.
Intermetrics merged with Whitesmiths Ltd. in December 1988. In 1997, Intermetrics merged with computer game developer Looking Glass Studios [1]. In 1998, Intermetrics acquired Pacer Infotec, and changed its name to 'AverStar'. AverStar merged with the Titan Corporation in March, 2000; Titan was acquired by L-3 Communications in 2005.
Sofcheck (spinoff from Avercom, formerly Averstar, formerly Intermetrics)
Вот оно как! Значит, надо ещё сайт avercom.net почекать. Почекал. Нашёл! Сдаётся мне, среднестатистическому адаисту ни AverCom, ни AverStar ни о чём не скажут, в отличие от Intermetrics и SofCheck, и тем не менее. Правда, PDF там нет.
Но я так и не почекал Intermetrics. Я пробовал intermetrics.com, в этом моя проблема. А надо было inmet.com. Действительно, по этому адресу тоже что-то нашлось. Но без документации. В самом деле, глупость какая! Кому она нужна, эта документация, давайте котами в мешках торговать. Но я тут заметил ещё кое-что:
Intermetrics developed AdaMagic both for use in our own compilers and tools and to license to other compiler and tool vendors.Таааак, значит, надо ещё почекать alsys.com, raytheon.com и других получателей лицензии. Вдруг хоть один из них нарушил режим строжайшей секретности и вот так вот просто взял и выложил документацию о своих компиляторах на сайт.
OCTAGRAM
C++ C ada AdaMagic Был такой компилятор AdaMagic, умел транслировать Ada в C и C++. Там ещё и в Java компиляция была, но это и сейчас есть в GNAT. Потом SofCheck был куплен AdaCore, и этот компилятор пропал из поля зрения. Однако, его продают под другим брендом тут. Его там завернули в какой-то AppCOE на базе Eclipse, но всё это можно развернуть, выкинуть лишнее и докопаться до самых важных файликов, adacgen.exe и adabgen.exe. На них навешена типа защита. Типа — потому что там, во-первых, есть отладочная информация, во-вторых, неиспользуемые функции не выбрасываются. Очень пригодилась мне такая неиспользуемая функция, как write_license_file, например.

Файл license_key.txt генерить научился, зашифрованные DES файлы типа libadartl.a.enc, разшифровал, для PDF пароль нашёл, поставлю qpdf и тоже разшифрую, впрочем, PDF в открытом виде можно и так скачать с сайта. Сейчас пишу инструкции, чтобы мои действия можно было повторить со следующими версиями. Вообще, не похоже, чтобы новый владелец-индиец разбежался развивать этот компилятор, он, скорее, вокруг достраивает всякие OS абстракторы на C, так что смысла большого обновляться не вижу, но тем не менее. Если думать на тему использования вместе со всякими emscripten, то от libadartl.a толку не очень много, но на всякий случай оно есть. С самим компилятором надо ещё разбираться. Он по умолчанию работает в режиме Ada->C->GCC, но в GCC есть GNAT, который гораздо лучше, и если кто-то заинтересовался AdaMagic, как я, то сценарий изпользования у него будет позабористее, и надо читать доки.

Таким образом, теперь есть компилятор Ada->C/C++, с помощью которого можно целиться во всякие дурацкие, но иногда нужные платформы, хостится он либо на Windows, либо на Linux, а через эмуляторы можно потенциально запускать из ещё большего набора OS. По плану выложить на форум только для зарегистрированных пользователей. Раз и навсегда адвокаты языков программирования, для которых на всех платформах есть транслятор, уедят.
OCTAGRAM
programming unicode ada GNAT Обнаружил, что GNAT уже давно автоматически использует UTF-8 как однобайтовую кодировку, а не ANSI (управляется переменной среды GNAT_CODE_PAGE). В смысле, использует её для I/O, в частности, имён файлов, где и был камень преткновения, поскольку у таких модулей, как Ada.Directories, аргументы в однобайтовых String, а не двухбайтовых Wide_String или четырёхбайтовых Wide_Wide_String. Кодировка исходников управляется -gnatW, в юникодных кодировках можно давать идентификаторам имена не на латинице и писать строковые литералы, но такие литералы должны быть достаточно широкими, потому что String по стандарту жёстко Latin-1, а всё русское требует минимум Wide_String. Есть, правда, вариант, при котором компилятор думает, что он парсит исходник в Latin-1, а он — в UTF-8 или ANSI, но как–то это не правильно, мне кажется. Идентификаторы не получится юникодные написать, и широкие строковые литералы, наоборот, будут коцаться.
Восемь назад на Windows такие строки было особо некуда деть, кроме платформозависимого Win32Ada. Нет, можно, конечно, было подключить Ada.Wide_Wide_Text_IO и пошпарить Юникодом в тексте файла, но имя файла при этом будет ограничено ANSI. Эту дырку GNAT закрыл давно. Есть у процедур открытия файла строковый параметр Form, смысл которого по стандарту определяется компилятором, и в GNAT его можно было использовать для того, чтобы указать, что имя файла — в UTF-8, а не ANSI. Так что, сконвертировав имя файла в UTF-8, можно даже было и открыть его. А вот Ada.Directories было более проблемным, там никаких параметров Form не было, чтоб отказаться от этого проклятого ANSI. Понятно, что были и Матрёшки, где диктатура четырёхбайтовых строк, не дожидаясь, когда стандарт избавится от однобайтового наследия, но состояние стандартной библиотеки тоже важно.

Попутно, пока искал, поиск выдавал мне, как обстоят дела у других разработчиков
But the problem is MSVC only accept UTF8+BOM and MinGW only UTF8-BOM
note that MinGW use UTF-8 for sources, while VC8 use ANSI
Если этот «хорошо подходящий для Windows» компилятор до сих пор форсит ANSI в исходниках (кто будет ставить BOM для UTF-8?), сочувствую тем, кто вынужден этой пакостью пользоваться.
OCTAGRAM
конкурс ARM embedded Spark ada Началось соревнование «Make with Ada» для разработчиков встраиваемых систем
AdaCore организует новый конкурс для разработчиков. Как и в прошлые разы, на подготовку даётся существенно больше времени, чем в олимпиадах по иноформатике. Это как раз подходит тем, кому не нравятся соревнования по быстрому написанию страшного кода, который потом только выбросить.

Сегодня на повестке дня — разработка для ARM на голом железе и технологии верификации. Общий призовой фонд — более 8000€.

makewithada.org

Как бы отвечая на напрашивающийся вопрос, — да, я уже посмотрел на логотип через анаглиф очки.
OCTAGRAM
C++ Haxe OpenFL OpenFL Setup Windows
In order to build Neko applications for Windows, no further dependencies are required. However, in order to build C++ applications for Windows, you must have a compatible version of Visual Studio C++ installed on your system.
Currently, OpenFL requires a version of Visual Studio capable of targeting Win32. For newer versions of Visual Studio, this requires the "Windows Desktop" version of the software.
Что у них вместо мозгов? Выбирать компилятор от Microsoft? Чем они вообще думали? У меня уже есть компилятор C++, интегрированный с компилятором Ады и есть совместимый с Delphi C++ Builder. Зачем кто–то тащит ничем не интересный компилятор от Microsoft?

Это уже напоминает Яндекс.Бар, производитель которого доплачивает тем, кто спамит этим УГ в своих программах.

You can only target Windows from a Windows system right now
Ну ещё бы. Думать же надо было
OCTAGRAM
ada GNAT Farewell Robert...
It fills me with with great sadness to announce that Robert Dewar passed away yesterday at home, surrounded by his family. His passion for Ada and software engineering, which was the driving force behind the GNAT compiler, was no more evident than in his discussions with customers, on community forums, with his students at NYU, and in the presentations he gave at numerous conferences. He will leave a big, big hole in many peoples' lives not least here at AdaCore. RIP Robert and thank you for everything.
OCTAGRAM
web JavaScript ada ParaSail asmjs forge.open-do.org
Недавно заметил, что там уже лежит в сорцах LLVM компилятор ParaSail. Точнее, он перегоняет байткод в инструкции LLVM, а байткод генерят компиляторы всех 4х экспериментальных языков, то есть, и Sparkel (Ада–подобный), и Parython (Python–подобный), и Javallel (Java–подобный), и ParaSail, который помесь всех трёх.
Однако, вчитавшись в последние посты по сабжу, увидел такое:
parasail-programming-language.blogspot.ru
At first we thought the built-ins needed to be translated to llvm code to successfully link with our generated llvm. To accomplish this, we used a tool called AdaMagic to convert the Ada source code (in which the built-ins are currently written) and Ada's run time system (RTS) to C source code then used the llvm C front-end "clang" to compile the rest of the way. Clang complained with hundreds of warnings, but, it worked. We were able to print integers, floats, and characters! We couldn't do much more with the built-ins at the time because we didn't yet have type descriptors working (see below).

After all the effort and dealing with the messy generated C code, we found out that the system linker could link object files compiled with the llvm backend called "llc" together with object files produced by the GNAT Ada compiler with no problem. That was a relief, as we really didn't want to go mucking around in the generated C code more than we had to.
Я–то хотел попускать зелёные потоки в web, да ещё в asm.js. А теперь вижу, что сами зелёные потоки скомпилировать в Asm.JS можно, а библиотеку времени выполнения — нет. Впрочем, подумав ещё немного, решил, что оно и не нужно. Поток там, считай, один, это уже немного менять рантайм. Ну или, если с WebWorkers, то, наверное, можно больше потоков, но тогда будет нужна коммуникация, которой в библиотеке для натива всё равно нет.

Наверное, если бы я этим занимался, я бы как–нибудь вообще обошёлся без LLVM, с одним только интерпретатором, зато прикрутил бы стандартный сетевой стек, JSON и XML, и портанул бы мои сетевые быдлоскрипты с node.js на нечто более человеческое и привычное. А если, так уж получилось, есть компиляция в LLVM, то всё это надо двинуть в UI и наладить взаимодействие между зелёными потоками клиентов и сервера. Есть предположение, что AdaCore не хотят пускать язык в массы пока он не устаканился, а создание компилятора в натив — это один из тестов, по результатам которого в языке могут что–то поменять.
OCTAGRAM
llvm GreenThreads ParaSail parasail-programming-language.blogspot.ru
С июля давно новостей не было, я уж думал, после слияния с AdaCore проект утонул. Как–никак, исследовательский. Ан нет, работа продолжается. С виртуальной машины переносят на нативный компилятор на базе LLVM.
Проект пока ещё не зрелый. Я пытался применить вместо node.js+Wind.js, но сразу наткнулся на то, что нет зелёнопоточной сети и работы с XML, а самому делать некогда было.
OCTAGRAM
Erlang pascal ada silver Разработчики Silver, в отличие от разработчиков Free Pascal, черпают вдохновение не из C++, а из более подходящей Ada, и тем самым автоматически получают уважение:
But with Elements 8.0, RemObjects are going further and introducing Not Nullable references types. That is, the declaration of a variable dictates that it must hold a reference and cannot be null.deltics.co.nz

Меня не всё устраивает в Ada, но, чтобы изменить ситуацию, надо отдать должное тому хорошему, что есть в Ada и перенять в другие языки. Только тогда может быть прогресс.

Тем временем в AdaCore экспериментируют с легковесной многопоточностью, делают язык программирования, стоящий в одном ряду с Erlang, Limbo, Rust, Go. Ada была выбрана из четырёх вариантов языка, имевших кодовые имена, цветов. Если я всё правильно помню, в Ada 83 победил Green, а к разработке Ada 95 подключились люди, делавшие Red. Чем–то в ускоренном варианте напоминает эту изторию разработка адского клона эрланга. В лабораториях AdaCore придумали экспериментальные Sparkel, Parython и Javallel, по синтаксису берущие начало от SPARK (подмножество Ada), Python и Java, соответственно, а потом взяли из них всё лучшее и получился ParaSail. Отличие от Erlang, Go и других языков в том, что в них зелёная многопоточность явная, нужно делать spawn, а в ParaSail и товарищах (в текущей версии они все компилируются в один байт–код и могут выполняться на одной и той же виртуальной машине) — в самом синтаксисе языка есть конструкции, допускающие разбиение на зелёные подзадачи. А компилятор убедится в безопасности доступа к данным.
parasail-programming-language.blogspot.ru

Для production ParaSail и товарищи пока сырые. В частности, работать с HTTP и XML я на них пока не смог. А жаль. Не выгорело с Erlang, хоть на Sparkel перевёз бы node.js проекты.
OCTAGRAM
programming ada Типичная ситуация в AdaCore vs. Ada community:

Да уж. Тут одно за собой тянет другое — недоступность Ады для ряда платформ уменьшает вероятность того, что кто-то кроме AdaCore будет вкладываться в развитие Ады, да и просто использовать её для своих проектов.
На примере нашей работы: мы занимаемся телекоммуникациями (VoIP). Есть у нас продукт — сервер видеоконференцсвязи (mcu). Писан на С++. Затем появилась потребность написать к нему собственные клиенты (там используется стандартный SIP-протокол, так что сторонние клиенты тоже работают, но свой будет лучше по ряду причин) в первую очередь для Windows. Клиент процентов на 70 состоит из общего с сервером кода (сигналинг, декодинг/енкодинг и так далее). Для клиента специфичен только GUI и средства воспроизведения (звук, видео) ну и некоторая дополнительная логика.
Затем потребовался клиент для Linux. Тут было еще проще — у него процентов 90 общего кода с Win-версией клиента (только устройства подложить линуксовые, да гуй перерисовать).
А вот теперь Android и iOS. Там в общем то тоже не сложно, особенно в iOS. Процентов 90 кода будет общее с десктопными клиентами (оставшиеся 10% пишутся на системо-специфичном ЯП — в случае Android это java, в случае iOS — это ObjC).
А если бы мы изначально взяли не С++, а Аду, то на этапе поддержки мобильных платформ мы бы сели в лужу, пришлось бы переписывать 90% кода с нуля на том же С++. А затем постоянно поддерживать это дело в актуальном состоянии и ручками синхронизировать с кодом сервера.
То есть выходит, что стратегически верным решением является изначально использовать не Аду, а С++, чтобы в последствии иметь свободу манёвра (если конечно вы меньше Боинга, и не можете заказать поддержку нужной платформы у AdaCore) — когда начинали разработку, два года назад, никто о написании своих специализированных клиентов для всех платформ еще и не думал — это был эксперимент. Успешный.

news.gmane.org

> А что у Ады с компиляцией под Apple iOS? Хотя бы адский код в либу собрать, чтобы её из ObjC там дергать.
У нас есть абсолютно полноценный порт под iOS, который мы разработали из любопытства в основном. К сожалению лицензионная модель эппл не позволяет нам предложить такой продукт.

news.gmane.org
OCTAGRAM
Аda При обсуждении набор тестов соответствия для стандарта языка Ада 2005 в корректировках ошибок в тестах участвовала не только AdaCore. Был и другой участник, видимо, с прототипом компилятора нового стандарта. Теперь ясно, кто это: irvine.com
OCTAGRAM
ada Омск ZOMG Омск в моих любимых гнатах!

C:\home\OCTAGRAM>gcc -v
Using built-in specs.
COLLECT_GCC=C:\Programs\GNAT\2011\bin\gcc.EXE
COLLECT_LTO_WRAPPER=c:/programs/gnat/2011/bin/../libexec/gcc/i686-pc-mingw32/4.5.3/lto-wrapper.exe
Target: i686-pc-mingw32
Configured with: ../src/configure --prefix=/gnat-prefix --with-mpc=/omsk.b/gnatmail/release-gpl/build-omsk/libmpfr/install --with-gmp=/omsk.b/gnatmail/release-gpl/build-omsk/libmpfr/install --with-mpfr=/omsk.b/gnatmail/release-gpl/build-omsk/libmpfr/install --build=i686-pc-mingw32 --enable-languages=c,ada,c++ --disable-nls --without-libiconv-prefix --disable-libmudflap --disable-libstdcxx-pch --disable-libada --enable-checking=release --enable-threads=win32 --disable-sjlj-exceptions --enable-lto --with-bugurl=URL:mailto:report@adacore.com --with-build-time-tools=/omsk.b/gnatmail/release-gpl/build-omsk/obj
Thread model: win32
gcc version 4.5.3 20110428 for GNAT GPL 2011 (20110428) (GCC)
OCTAGRAM
Windows Админам, особенно студенческих сеток, может быть интересно, какие URL зашиты в Windows, чтобы подменить их на уровне DNS на что–нибудь более интересное.

Например, при открытии незнакомого расширения открывается go.microsoft.com который обычно перенаправляет на shell.windows.com
При первом запуске Internet Explorer открывается go.microsoft.com (возможны другие варианты)
При добавлении нового элемента в Сетевое окружение делается запрос к shell.windows.com , в который так и чешутся руки понапихать свои какие–нибудь FTP. Оригинальный URL, кстати, возвращает 404, но есть образец формата: shell.windows.com
При нажатии на «Опубликовать папку в вебе» в Проводнике запрос делается к тому же адресу.
Ещё остаются поиск неопознанного оборудования и поиск недостающего кодека в Windows Media Player, но я сходу не смог воспроизвести эти ситуации.

Не совсем Windows, но в студенческих сетях есть Delphi 7, а в Delphi 7 есть Delphi Direct, встроенные новости, берущиеся по адресу borland.com Сейчас по этому адресу 404, но формат файла можно посмотреть в машине времени: web.archive.org Сюда можно транслировать новости, допустим, с libre.adacore.com Пусть паскалисты апгрейдятся!