Версия PascalABC.NET 3.4

А пользуйтесь тогда 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 - проблема не пропадает. Поищу среди статичных полей…

А, я, кажется, нашёл в чём дело… Все созданные сборки продолжают хранится в главном домене. И поэтому никогда не отгружаются (их там сотни в первые пару минут накапливается! а дальше - хуже). Причём сборки отгружать нельзя, можно отгрузить только домен целиком. Попробую разобраться как это сделать…

1 лайк

@Admin в целом работает (исходники с изменениями). Надо только дочистить всякие мелочи и провести сами тесты. И вот с последними возникла проблема:

Файл TestSuite\errors\err0146:

var i : byte;
const set1 : set of byte = [2,i];
begin
end.

Компиляция проходит успешно. По крайней мере срабатывает условие

if comp.ErrorsList.Count = 0 then

на строчке 97. Я проверил что смог с моей стороны, но, похоже, тут уже проблема внутри компилятора. Пока, локально удалил этот тест, но коммитить удаление не буду, чтоб в журнале висел.

И ещё, TestSuite\usesunits\use_explicitinterface.pas

uses u_explicitinterface; begin end.

падает:

Что то не так в u_explicitinterface.pcu.

Если откомпилировать TestSuite\units\u_explicitinterface.pas из IDE и заменить тот .pcu на полученный - всё в порядке.

P.S. Но только из IDE. TestRunner всё равно падает.

P.P.S. И так же с TestSuite\usesunits\use_interface2.pas, и от туда же use_interface4.pas, use_nested_lambdas_1.pas.

Смотрю, как Вы уже сутки сам с собой переписываетесь и вспоминаю фразу: “До чего же приятно бывает поговорить с умным человеком!” :stuck_out_tongue_winking_eye:

1 лайк

У меня пишет Program1.pas(2) : Ожидалось константное выражение Это плохо что компилятор у Вас не выдаёт ошибок. Конечно - чуть что - виноват компилятор )))

Ну, устаревшие pcu не кушаются новой версией компилятора. Им надо перекомпилировать все модули

У нас вот testRunner на этих тестах не падает

Нет, из IDE и у меня эту ошибку выдаёт. Это только в тест ранере так.

Так они и перекомпилируются перед этим. Иначе бы .pcu вообще не было (их отчищает перед всем).

ага