Версия PascalABC.NET 3.4

Для ваших целей используйте if a is B

Мы уже закрыли эту тему. Все аргументы мои были размещены ранее. Тем более, в данном случае (ограничений) запрет в плане краткости кода никому не навредит. Не вижу смысла поднимать этот вопрос.

Больше недели (с 11 числа) нету обновлений, снова готовится что то большое?

2 сообщения перенесены в тему Болталка PascalABC.NET

Нет. У нас есть периоды затишья. У нас есть основная работа.

Основные обновления прошли летом - вряд ли стоит ждать больших обновлений в течение учебного года.

Но какие-то ошибки и какие-то улучшения, несомненно будут исправляться и реализовываться.

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

2 лайка

Вроде на это вопрос Ulysses ответил

@Admin компиляция командной строкой зачем то в некоторых случаях вызывает System.Console.ReadKey из метода PascalABCCompiler.ConsoleComliler.CompileAssembly. При этом если перенаправить ввод - получаем ошибку:

Можете, пожалуйста, посмотреть зачем оно там? Зачем вообще консольному компилятору ожидать какого то нажатия клавиш?

А, точно, это при возникновении ошибки компиляции… Можете тогда заменить ReadKey на Read или что то типо него, чтоб не было зависания при запуске консольного компилятора с перенаправленным выводом? Если сейчас не перенаправлять ввод - получаем просто зависание.

А пользуйтесь тогда pabcnetclear.exe

А, так вот оно для чего))

Хах, с ним ошибка которая меня давно доставала (внутренняя плавающая ошибка) - становится стабильной. Стабильно ломающей всё и сразу((( Ну, теперь, по крайней мере, поймаю её…

Мда… Представьте себе:

  • Строчка, вызывающая ошибку, находилась, из 7 модулей, в самом дальнем (том что к всему подключается).
  • Это единственный из модулей с >3k строчек и очень сложной структурой (куча циклических зависимостей и т.п., в общем большими кусками удалить не получится, над каждым сокращением надо много думать).
  • Строчка вызывающая ошибку - оказывается вызывала сразу #1417 и #1418, поэтому когда я нашёл первую мне пришлось снова всё перелопачивать…

В общем сегодня не мой день :smile:. Ну зато надонец нашёл ту(те) пакость что каждую десятую компиляцию давала вылет компилятора, но не когда я пытался её поймать (надеюсь… ну, по крайней мере, #1418 имеет тот же текст что та пакость).

1 лайк

@Admin а как у консольного компилятора включить режим без отладочной информации? Там какой то параметр в командной строке поидее?

Debug=0

1 лайк

20 мин назад добавили пулл-реквест:

Думаю, название само за себя говорит)))
:tada:

1 лайк

@Admin, @ibond, как всё же правильно собирать билд компилятора?

_GenerateAllSetups.bat конечно прикольно, но долго, ибо куча всего лишнего. А строчку с тест ранером ещё руками убирать приходится, потому что он не только пол часа работает, а ещё и убивает мне комп, сжирая всю оперативку (даже если я всё остальное вырублю).

Почему, к примеру, не работает _ReBuildRelease.bat и затем ReleaseGenerators\PascalABCNETStandart.bat? Последний вылетает говоря (я добавил строчку PAUSE в конец чтоб не закрывалось сразу):

Единственный РелизГенератор который работает после _ReBuildRelease.bat - это PascalABCNETConsoleZIP.bat, но и тот как то криво. Я попытался распаковывать и запускать install_pabcnetc.bat, но последний билд от этого не ставится.


Я так понимаю там не хватает чтоб только что собранный компилятор отработал на стандартных модулях… Так вот в чём вопрос:

Есть ли какой то промежуточный метод, не запуская сборку сразу всех установщиков и тестера, но при этом чтоб билд дало поставить? Может где то есть ещё 1 .bat выполняющий всё что не доделал _ReBuildRelease.bat кроме тестера?

И как вы сами обычно это делаете, чтоб протестировать новую мелкую фичу и т.п.?

Для теста любой фичи мы запускаем _RebuildReleaseAndRunTests.bat Это долго, но мы всегда так делаем. Сжирается оперативка, зато все тесты проверяются.

Генерация инсталлята без прохождения тестов - это неправильно.

Вообще, разработчик должен иметь достаточно мощный компьютер.

PascalABCNETStandart.bat - надо разбираться - он запускается в предположении, что установлен текущим какой-то каталог. Возможно поэтому он не работает явно.

Кстати, Вы можете в папке bin найти исходники TestRunner.pas и исправить их так чтобы на вашем компьютере он не сжирал всю оперативку

1 лайк

То есть у себя локально или вам пулл реквест кинуть?

А дело, скорее всего, не в тестере… А внутри компилятора. Проявляется когда не перезагружая .dll компилируют сразу много всего. Но если создать новый экземпляр Compiler - проблема не пропадает. Поищу среди статичных полей…