Новое в FPC 2.4.0

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

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

Новое в FPC 2.4.0

Сообщение Mirage » 30.01.2010 20:50:28

Всем привет.
Читаю список изменений в FPC 2.4.0
http://wiki.freepascal.org/User_Changes_2.4.0
и удивляюсь большому количеству оных, введенных для совместимости с Delphi. ProjectX на базе FPC чтоли планируется? :)

Еще порадовало изменение в выравнивании рекордов. Раньше они как попало могли лежать на стеке, а сейчас как положено. Очень вероятно, что отставание от дельфей в скорости было обусловлено именно этим. Сейчас буду тестить.:)

Добавлено спустя 23 часа 10 минут 42 секунды:
Так и есть -- реальный код (не синтетический тест) скомпилированный 2.4.0 заметно быстрее чем 2.3.1 и не уступает Delphi.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Новое в FPC 2.4.0

Сообщение Ambient » 17.02.2010 08:12:40

Вопрос по нововведениям в FPC.
Планируется ли что-то подобное?
1)
TRec = Record
value : String;
procedure DoProc(A1: String);
End;

2) Классы, совместимые с С++
т.е., чтобы можно было, к примеру описать класс из гнусного с++

[CPP, external]
TClass = class
...
end;

и можно было бы безболезненно использовать внешние объекты из С++ библиотек.
Аватара пользователя
Ambient
новенький
 
Сообщения: 24
Зарегистрирован: 27.09.2009 10:51:17

Re: Новое в FPC 2.4.0

Сообщение Sergei I. Gorelkin » 17.02.2010 12:48:28

(2) уже черт значет сколько присутствует в форме ключевого слова cppclass.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Новое в FPC 2.4.0

Сообщение скалогрыз » 17.02.2010 13:39:23

Sergei I. Gorelkin писал(а):(2) уже черт значет сколько присутствует в форме ключевого слова cppclass.

и толком не поддерживается :)

кто-то недавно что-то исправлял в реализации cpp, но вроде как бросил это занятие?!
http://www.mail-archive.com/fpc-devel@l ... 15312.html

потому и Qt widget использует Си-шную обёртку, вместо прямого использования классов.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Новое в FPC 2.4.0

Сообщение Ambient » 17.02.2010 14:33:57

Sergei I. Gorelkin писал(а):(2) уже черт значет сколько присутствует в форме ключевого слова cppclass.

Сергей, а где про это почитать подробнее можно?
Аватара пользователя
Ambient
новенький
 
Сообщения: 24
Зарегистрирован: 27.09.2009 10:51:17

Re: Новое в FPC 2.4.0

Сообщение Sergei I. Gorelkin » 17.02.2010 14:51:20

Не знаю, в официальной документации что-то не видно упоминаний...
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Новое в FPC 2.4.0

Сообщение coyot.rush » 17.02.2010 17:54:48

Free Pascal Compiler version 2.4.0
Compiler Date : 2009/12/28

Ow<x> Perform whole-program optimization <x>, see fpc -i for possible values
Supported Whole Program Optimizations:
All
DEVIRTCALLS
OPTVMTS
SYMBOLLIVENESS

Кто нибудь этим пользовался и что эт токаое :?: В 2.2.х нет такого :!:

Добавлено спустя 27 минут 55 секунд:
Ambient
и можно было бы безболезненно использовать внешние объекты из С++ библиотек.

Напрямую врядли, но можно и так.
Смотреть здесь http://www.freepascal.org/docs.var make code written in C or C++ accessible in Pascal. зеркало http://mirror.mirimar.net/freepascal/docs-pdf/
Аватара пользователя
coyot.rush
постоялец
 
Сообщения: 309
Зарегистрирован: 14.08.2009 08:59:48

Re: Новое в FPC 2.4.0

Сообщение Sergei I. Gorelkin » 17.02.2010 19:13:19

coyot.rush писал(а):Кто нибудь этим пользовался и что эт токаое В 2.2.х нет такого

Оптимизация программы целиком: http://wiki.freepascal.org/Whole_Program_Optimization
Предназначается для уменьшения размера программ, о котором так долго и нудно говорят все, кто способен говорить...
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Новое в FPC 2.4.0

Сообщение Mirage » 18.02.2010 22:08:28

1) тоже присутствует еще со времен Turbo pascal, в виде ключевого слова object.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Новое в FPC 2.4.0

Сообщение Ambient » 19.02.2010 08:15:21

Mirage писал(а):1) тоже присутствует еще со времен Turbo pascal, в виде ключевого слова object.

"Нет такой буквы в этом слове" (с)
Суть, реализация и механизмы

Код: Выделить всё
TRec = Record
   value : String;
   procedure DoProc(A1: String);
End;

и
Код: Выделить всё
TObj = object
   value : String;
   procedure DoProc(A1: String);
End;

несколько отличаются, достаточно выполнить sizeof, прочитать о нововведениях в Дельфи и наступит просветление.

Добавлено спустя 2 минуты:
Sergei I. Gorelkin писал(а):(2) уже черт значет сколько присутствует в форме ключевого слова cppclass.

Ага, оказалось, что ключевое слово присутствует, но пользы от этого ноль. А жаль.
Аватара пользователя
Ambient
новенький
 
Сообщения: 24
Зарегистрирован: 27.09.2009 10:51:17

Re: Новое в FPC 2.4.0

Сообщение alexrayne » 19.02.2010 10:31:09

Ambient писал(а): Mirage писал(а):1) тоже присутствует еще со времен Turbo pascal, в виде ключевого слова object.


"Нет такой буквы в этом слове" (с)
Суть, реализация и механизмы

Код: Выделить всё
TRec = Record
value : String;
procedure DoProc(A1: String);
End;


и

Код: Выделить всё
TObj = object
value : String;
procedure DoProc(A1: String);
End;


несколько отличаются, достаточно выполнить sizeof, прочитать о нововведениях в Дельфи и наступит просветление.


Вообще в обероне похожую фичу реализовали весьма приятным образом процедурами связанными с типом:
PROCEDURE (t: Tree) Insert (node: Tree);
потом она вызывается как метод t: Tree.
ето конешноже перегрузка функций в слегка переворматированом виде но имхо стилистику писания меняет существенно. (так же как и использование () для индексации массива вместо [])
что интересно, для реализации етого сичас ненужно много пилить, поправить только синтаксический анализатор.
зато помимо методов в рекордах, можно методы к чему угодно прикрутить.
alexrayne
постоялец
 
Сообщения: 125
Зарегистрирован: 03.12.2008 16:56:26

Re: Новое в FPC 2.4.0

Сообщение Max Rusov » 19.02.2010 11:50:17

Ambient писал(а): Суть, реализация и механизмы Record... и object... несколько отличаются, достаточно выполнить sizeof, прочитать о нововведениях в Дельфи и наступит просветление.

Вы ошибаетесь. Если не описывать в object виртуальные методы, то это суть Record и будет. Только что case нельзя делать, но это легко обходится.
Max Rusov
постоялец
 
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03

Re: Новое в FPC 2.4.0

Сообщение Astralis » 22.02.2010 20:49:55

1. Все зависит от потребности:
а. точное соотвествие Delphi Language 2008
тут уже ничего не изменить
b. record с четко опреденными полями в указанных смещениях, как правило для вызова внешних библиотек
в этом случае достаточно record c полем процедурного типа и однократнного связывания указателя
c. класс, размещенный в стеке
object - очевидное решение
d. статический класс, аналог namespace в c++
можно использовать отдельный юнит, класс с класс-методами и статическими полями, а можно просто создаь класс в секции initialization
e. объектная ориентированность
class решает почти все подобные потребности

2. есть несколько возможнстей
a. ключевое слово cppclass
b. импорт отдельных методов класс, подробнее написал здесь
с. получить экземпляр класс и работать с его VMT. Хотя указание виртуальности метода является оциональным, это является отступлением от ООП в пользу эффективности программного кода. Так что можно сделать все методы виртуальными и эффективно работать.
Аватара пользователя
Astralis
новенький
 
Сообщения: 45
Зарегистрирован: 06.06.2007 20:33:05
Откуда: Tvercity-Annet

Re: Новое в FPC 2.4.0

Сообщение Cheb » 23.02.2010 15:50:22

У меня:
1). Отломились массивы, индексировавшиеся булевым типом. Заменил на [0..1], и на ord() при индексации и сижу теперь, нервно скрестив пальцы
2). В Линуксе взыграл дремавший баг в binutils (при компиляции динамических библиотек) в результате чего обломился линкер, и понадобилось шаманство с привинчиванием к opensuse 11.1 репозиториев от 11.2
3). Неожиданно отломилась моя система перзистентности: в RTTI изменился тип Wide строки, tkWString на tkUString. Причём только в Линуксе: в маздае всё работает не чихнув. Буду разбрираться, W. это за F.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Новое в FPC 2.4.0

Сообщение Mirage » 23.02.2010 22:30:05

Cheb писал(а):1). Отломились массивы, индексировавшиеся булевым типом.


Как отломились? У меня такие используются. Правда константы только.
А перечисления в качестве индекса использую и в переменных - все работает.

Кстати, вижу, у некоторых на форуме FPC пишет версию 2.4.1 - это где такая берется?
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

След.

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

Рейтинг@Mail.ru