FPC 3.0 RC1 announced

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

FPC 3.0 RC1 announced

Сообщение Kitayets » 26.08.2015 11:58:34

Не знаю, как на сайте новость добавить, так что пишу здесь,

Вчера, 25 Августа 2015, разработчики объявили о выходе первого кандидата в релиз (Release candiaate 1) компилятора free pascal версии 3.0.

Все заинтересованные пользователи приглашаются к тестированию.

Информация о том как сообщить замечания - http://wiki.freepascal.org/Testers_3.0.0

Новые функции версии 3.0 - http://wiki.freepascal.org/FPC_New_Features_3.0

Изменения, которые могут потребовать переработки кода - http://wiki.freepascal.org/User_Changes_3.0

ссылка на сам анонс - http://forum.lazarus.freepascal.org/index.php/topic,29457.msg186072/topicseen.html?PHPSESSID=c6d6f2f8dcecc41763a98d55be63ff93#new
Kitayets
постоялец
 
Сообщения: 168
Зарегистрирован: 05.05.2010 21:15:24

Re: FPC 3.0 RC1 announced

Сообщение Vadim » 26.08.2015 12:13:58

Ну, теперь всё! Тут то мы и попрыгаем... :-)
Vadim
долгожитель
 
Сообщения: 3920
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: FPC 3.0 RC1 announced

Сообщение Cheb » 26.08.2015 19:04:03

Оченно рад. Выглядит так, что мне теперь не придётся портировать свои страшные ктулхаки в обработке исключений с Win32 на Win64.

Добавлено спустя 4 часа 3 минуты 53 секунды:
Страница для тестеров пока - пустая затычка. Повествую здесь.


Ужос №1. Первый раз компиляция заканчивается нормальной ошибкой (попутно подчищаю сопли с AnsiString). Повторный запуск - компилятор делает хряп, пока не удалишь все PPU.
Кровавые подробности, выданные -vv :
00008000:Searching file chelinfo.pp... found
10010000:chelinfo.pp(244,16) ENDIF DARWIN found
10000001:Fatal: Compilation aborted
Причём, за это самое "ENDIF DARWIN" он почему-то принимает точку с запятой (пробовал двигать - всегда указывает точно на после неё). Реальный эндиф - глубоко в хвосте юнита.
Хакнул вокруг, добавив в батник неэлегантное
del /Q ......tmpmain*.ppu
del /Q ......tmpmain*.o

P.S. Добавка/удаление -XX влияет на то, сколько юнитов скомпилирует прежде, чем хряпнуться.

Добавлено спустя 5 минут 22 секунды:
Использовал TStringList чтобы программа в рантайме обновила кусок собственных исходников, высрав кучу строк в utf-8 (никак руки не дойдут избавиться от моего старого фтагна многоязычности).
То, что работало раньше, с радостью запороло текст, высрав его в ANSI.
Заменил
Код: Выделить всё
sl.Add('    ''' + Utf8Encode(ws) + ''',');

на
Код: Выделить всё
sl.Add(Utf8Encode('    ''' + ws + ''','));

, где ws - UnicodeString,
и сразу заработало.

Добавлено спустя 57 минут 42 секунды:
Экзешник собрался, запустился, всё пучком.
На DLL игрового модуля компилятор хряпнулся с D:\chentrah\modules\chentrah\src\mo_cps_scenario.inc(270,3) Fatal: Internal error 200309041

Причём, в fpcdebug.txt выдал всё то же ENDIF DARWIN found в том же многострадальном chelinfo.

Буду завтра вечером шаманить, что ему надо.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 862
Зарегистрирован: 06.06.2005 15:54:34

Re: FPC 3.0 RC1 announced

Сообщение hinst » 27.08.2015 14:23:18

из новых фич я вижу только одну фичу: codepage-aware-strings, и эта фича - гавно
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 782
Зарегистрирован: 12.04.2008 18:32:38

Re: FPC 3.0 RC1 announced

Сообщение Cheb » 27.08.2015 17:20:40

В теории, надо было вводить новый ключ, вроде {$longstrings, по умолчанию выключенный. И новую строку называть как-то по другому, не трогая не AnsiString.

Фича отличная, и обязательно засияет -- после того, как соберёшь мягким местом все занозы от перехода на неё.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 862
Зарегистрирован: 06.06.2005 15:54:34

Re: FPC 3.0 RC1 announced

Сообщение hinst » 27.08.2015 17:27:21

Нифига, фича гавно. С такими фичами я бы предпочёл чтобы они в самом деле успокоились и не делали новые фичи вообще. Единственная нормальная фича это когда внутри вся стандартная библиотека языка использует одну кодировку и вся программа на этом языке использует эту кодировку. В Java и Delphi это Unicode. В Go и FreePascal это UTF-8. Перекодировка должна происходить только при записи в файлы или при отправке данных по сети. Но затем в FreePascal чё-т передумали и решили прицепить кодировку к string

1. В других языках программирования так не сделали, а сделали определённую стандартную кодировку
2. До этого всё прекрасно работало и так. Не работало только у тех, кто не знает что такое кодировка.
3. Оверхэд по перформансу! тормозит1! теперь на каждый чих и на каждый s := s + '.' будет проверяться кодировка
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 782
Зарегистрирован: 12.04.2008 18:32:38

Re: FPC 3.0 RC1 announced

Сообщение sts » 27.08.2015 18:00:58

эээ а где написано про каждый чих? и зачем проверять?

Добавлено спустя 1 минуту 48 секунд:
в jave строки тоже с кодировкой и никаких автоматических конвертация нету, делают сами, там где надо.

Добавлено спустя 7 минут 15 секунд:
зато, можно сделать автоматическую конвертацию при конкатенации строк типа UnicodeString1:= UnicodeString2 + AnsiString2 и это хорошо, но везде проверку пихать - нету смысла.
sts
постоялец
 
Сообщения: 293
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

Re: FPC 3.0 RC1 announced

Сообщение Kitayets » 28.08.2015 15:11:41

2hinst

эээ codepage-aware-strings - это ж прямая калька с новых версий delphi.... они там их едят и не жужжат. Проблема только, когда все толстые библиотеки (особенно LCL) смогут корректно эти строки переваривать не портя кодировки.
Kitayets
постоялец
 
Сообщения: 168
Зарегистрирован: 05.05.2010 21:15:24

Re: FPC 3.0 RC1 announced

Сообщение hinst » 29.08.2015 23:28:37

В Delphi кодировка двухбайтовый Unicode и кодировка строго определённая. Стандарт для дельфи это Unicode. Да, для AnsiString есть фича которая присоединяет к AnsiString, но это совсем другая фича которая во-первых жопная, а во-вторых это не кодировка а локаль; а втретьих она не должна использоваться вообще ведь стандартная библиотека Delphi, включая VCL работают в Unicode и кодировка фиксированная Unicode
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 782
Зарегистрирован: 12.04.2008 18:32:38

Re: FPC 3.0 RC1 announced

Сообщение kazalex » 30.08.2015 02:20:24

hinst писал(а):которая во-первых жопная, а во-вторых это не кодировка а локаль

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

hinst писал(а):а втретьих она не должна использоваться вообще ведь стандартная библиотека Delphi, включая VCL работают в Unicode и кодировка фиксированная Unicode

Почему не использовать, если это удобно? Конвертирование таких строк в юникод делается автоматически, поэтому никаких проблем с их использованием в юникодных RTL и VCL нет.
kazalex
постоялец
 
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

Re: FPC 3.0 RC1 announced

Сообщение Mikhail » 30.08.2015 11:00:15

sts писал(а):зато, можно сделать автоматическую конвертацию при конкатенации строк типа UnicodeString1:= UnicodeString2 + AnsiString2 и это хорошо, но везде проверку пихать - нету смысла.

Зачем? Все эти неявные преобразования создают проблем больше, чем решают. Надо отставить два встроенных типа строк Юникод и однобайтовые AnsiString, без указания кодировок. Все преобразования типов строк только явно!
Mikhail
энтузиаст
 
Сообщения: 544
Зарегистрирован: 24.10.2013 16:06:47

Re: FPC 3.0 RC1 announced

Сообщение kazalex » 30.08.2015 12:17:35

Mikhail писал(а):Все эти неявные преобразования создают проблем больше, чем решают

Расскажи какие проблемы они создали лично тебе.

Mikhail писал(а):Все преобразования типов строк только явно!

На неявное преобразование строк (в обе стороны) компилятор даёт предупреждение. После чего ты делаешь преобразование через кастинг и вот у тебя уже явное преобразование. Аллилуйя!
kazalex
постоялец
 
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

Re: FPC 3.0 RC1 announced

Сообщение Mikhail » 30.08.2015 12:30:56

kazalex писал(а):Расскажи какие проблемы они создали лично тебе.

Например перекодировка, когда это не нужно. Кроме того это ведет к созданию неэффективного кода и увеличивает размер программы.
Никакой нужды в постоянной перекодировке строк, как правило, нет. А если это все-таки нужно, то это делается по месту и явно.
Представляешь сколько компилятор может выдать предупреждений для такого случая?
Mikhail
энтузиаст
 
Сообщения: 544
Зарегистрирован: 24.10.2013 16:06:47

Re: FPC 3.0 RC1 announced

Сообщение kazalex » 30.08.2015 12:43:51

Mikhail писал(а):Например перекодировка, когда это не нужно.

Очевидно, что если нет нужды в преобразовании, то и использовать различные типы строк не нужно.

Mikhail писал(а):Кроме того это ведет к созданию неэффективного кода и увеличивает размер программы.

Если же преобразование требуется, то его придётся делать тем или иным способом, и это однозначно увеличит размер программы (использование дженериков увеличивает его значительно больше, но дженерикам все рады).

Mikhail писал(а):Никакой нужды в постоянной перекодировке строк, как правило, нет. А если это все-таки нужно, то это делается по месту и явно

Ну так не нужно писать код требующий постоянных преобразований. Компилятор этому только способствует.
kazalex
постоялец
 
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

Re: FPC 3.0 RC1 announced

Сообщение runewalsh » 30.08.2015 15:19:23

kazalex писал(а):Ну так не нужно писать код требующий постоянных преобразований.

В делфи-варианте любая операция со строкой — потенциальное преобразование, о том и речь. Я надеюсь, это отключаемо?
Аватара пользователя
runewalsh
постоялец
 
Сообщения: 498
Зарегистрирован: 27.04.2010 00:15:25

След.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: Сквозняк и гости: 3

Рейтинг@Mail.ru
cron