Free Pascal 2.20 的新特性

软件和网站开发以及相关技术探讨
回复
chenxinyv
帖子: 7
注册时间: 2007-12-27 20:17

Free Pascal 2.20 的新特性

#1

帖子 chenxinyv » 2008-04-19 19:10

Free Pascal的新特性
2008-02-29 14:03

这是一份FreePascal What's new的翻译,错误之处,还望不吝指正。。。

Free Pascal 编译器

Version 2.2.0

******************************************************************************
2.2.0版新特性
******************************************************************************

Free Pascal 2.2.0 包含了大量的错误修正和新功能。 整个工作从2005年中开始,从那
时起,加入了大量的改进。

此外,亦请访问http://wiki.freepascal.org/user_changes_2.2.0参阅变动列表,这些
变动可能会影响到以前的工作方式,并了解如何应对这些变化。

平台:
* 新的平台:win64,FPC是第一个Windows64下的开源编译器。
* 新的处理器架构:64位PowerPC(支持Linux)
* i386平台下的Mac OS X现在已经支持
* 新的平台: Windows CE(Windows移动开发)
* 新的平台:任天堂的Game Boy Advance
* 新的平台:任天堂DS
* 原生代码支持ARM的平台
* GO32V2 DOS平台升级

编译器:
* 内部连接器,能为Win32,win64和WinCE构造较小的可执行文件,编译时占用内存少,
使用如Lazarus组件库之类的大型Framework时编译速度更快;
* 泛型(实验中);
* 紧缩数组和记录;
* 对Resourcestrings现在可以进行Smartlink,构建更小的可执行文件;
* 复合资源文件支持
* pointer[low..high]语法的类C风格指针数组,使过程能使用开放数组
* 接口委托(Interface delegation)
* 专属的safecall实现
* 在Windows下宽字符串与COM/OLE兼容;
* 增加了若干速度最佳化,例如:
* 编译器可忽略栈结构(X86和ARM)
* 编译器可以存储记录在寄存器中
* 尾递归扩张
* 寄存器更名优化
* 改进对ARM CPU的优化;
* 编译器可以初始化局部变量,函数返回值,"out" 参数可以带多个值(命令行参数
-gt 到 -gtttt)帮助查找未初始化变量
* 编译器现在可以在所有情况下妥善处理超过255个字符的路径名
* 不完全的调试格式支持
* 在进行汇编时减少内存占用
* 很多小错误和兼容性修正

RTL:
* 使用较少的记忆体
* 改进变体类型支持
* 改进currency类型支持
* 不使用SysUtils单元进行异常处理
* 很多小错误和兼容性修正

FCL:
* 改进数据库支持;
* 撤销过时的sqlitedataset,interbase,fpodbc,ddg,mysqldb3和mysqldb4
单元;
* 很多小错误和兼容性修正

Packages:
* 增加了一个新的fppkg软件包管理器
* 改进数据库支持
* 新加入Delphi兼容的RichEdit单元
* 将公用FPC/GPC/MW接口更新到支持Apple通用接口r204
* 很多小错误和兼容性修正

Free Vision:
* 启用resourcestrings

IDE:
* Evaluate window
* 改进HTML转换
* 改进xterm支持
* 小bug修复

杂项:
* 改善文档
* 更好的跨平台编译支持

浏览http://www.freepascal.org/mantis/changelog_pag ... ug追踪报告可以看到
详细的bug修复报告列表。

******************************************************************************
2.0.4版新特性
******************************************************************************

从2.0.2到2.0.4,有超过1000项改变。由于这一版本着重bug修正,多数是修补一些问题,
但新的功能和性能也有所增加。

编译器:
* 很多小错误和兼容性修补
* 更新了几个翻译
* 改进代码生成
* 提高和改进PIC的代码生成
* 改善寄存器分配
* 提高AnsiString串的代码生成
* 变量对齐,所以对新处理器的应用更高效
* Windows单元定义可以对应所有的Windows平台(Win32下,win64,WinCE)
* Parameter order for methods with structured results changed
(result pointer<->self swapped), please check such methods if they are
implemented in assembler
* 安装在x86_64 Linux发行版中的i386编译器不再需要环境变量设置

RTL:
* 很多小错误和兼容性修补
* 64位文件指针支持
* 更快的整数到字符串转换
* 增加Endian转换处理单元
* 改善堆的管理
* 提高AnsiString处理单元
* PowerPC:Power3/4/5/PPC970兼容

FCL:
* 很多小错误和兼容性修补
* 改进数据库支持
* interbase,fpodbc,ddg,mysqldb3和mysqldb4单位
已经过时,取而代之的是sqldb组件
* 增加对Oracle的支持

Packages:
* 很多小错误和兼容性修补
* 改进数据库支持
* 增加Apple通用接口

Free Vision:
* 新的outline单元
* 小的bug修补
* Unix:大大改善了视频和键盘操作
* Unix:Free Vision应用程序不再需要连接到libc
* Linux:grab_vcsa程序确保vcsa存取

IDE:
* 小补丁
* 重新设计的目录窗口
* 改组后的编译器选项窗口
* 选择使用按Ctrl+X,C,V来进行剪切/复制/粘贴

杂项:
* 改进的文档
* 更好的跨平台编译支持

******************************************************************************
2.0.2版新特性
******************************************************************************
这是一个bug修复发布,所以不要指望会列出大的新功能。从2.0.0到2.0.2差不多有700处
修改。

编译器:
* 很多小错误和兼容性修补
* 改善SSE支持
* 改善inlining
* 增强变体类型支持
* 利用elf32可执行文件格式来实现嵌入式资源支持
+ 编译时表达式进行类型检查
+ Mode MacPas:支持Mac样式的对象
+ Mode MacPas:编译时变量可以用命令行来赋值

RTL:
* 很多小错误和兼容性修补
* 增强变体类型支持
* 嵌入式资源方面的支持为目标,利用elf32可执行文件格式

FCL:
* 很多小错误和兼容性修补
* 改进sqldb包

Packages:
* 很多小错误和兼容性修补
* 完善的数据库支持

集成开发环境:
* 小bug修补

杂项:
* 改善文档
* 修复FreeVision的bug

******************************************************************************
2.0.0版新特性
******************************************************************************
编译器:
+ 支持对象属性
+ use of cmov when at least -Cppentium2 is supplied (i386+ only)
+ 在MacPas模式下把.P作为一个搜索来源扩展
* 改善MacPas模式
* 改善变体类型支持
* 更新了语言文件
* 对未初始化的变量做出警告
* 很多小错误和兼容性修补

RTL:
* 几个WideString和unicode方面的改进
* 大量改进变体类型支持
* 提高线程支持
* 提高64位兼容性
* 很多小错误和兼容性修补

FCL:
* 完善的数据支持
* 很多小错误和兼容性修补

Packages:
+ 在包中加入部分Jedi Windows API内容
+ rtl中的部分Windows单元文件被移动到packages/base/winunits目录
+ XFree header conversions to X package added
* Endian and 64 bit fixes丁
* 很多小错误和兼容性修补

IDE:
* 小bug修补

杂项:
杂项:
* 改善文档
* 修复FreeVision的bug


Version 1.9.8(也叫做2.0.0-Rc2)

******************************************************************************
1.9.8(也叫做a 2.0.0-Rc2)版新特性
******************************************************************************
编译器:
+ 实现arm-linux和i386-linux的交叉编译
+ 对MorphOS增加SysV类型的系统调用
+ MacPas模式下可以输出宏
+ MacPas模式下支持在参数中作procvar声明中
+ 如果一组while/if指令从不执行,系统会给予警告
+ 增加{$COPERATORS ON} 指令,synomym for -Sc
+ 在for-loop语法中检查未初始化的变量
+ 增加-Fa<unit>选项用于在程序的uses语句被解析之前加载单元
+ -vz用于输出stderr
* 更好地支持unique特类型
* AfterConstruction/BeforeDestruction操作兼容Delphi
* 更好地支持WideString
* 移除{$THREADING ON}指令,线程支持总是有效
* 在SPARC上改进代码生成
* 很多小错误和兼容性修补
+ 对于MacOS,资源文件得到支持

RTL:
+ 支持arm Linux
* 基本线程支持转移到了system单元
* 操作符**移到math单元,移除system.power
* 提高变体类型支持
* 很多小错误和兼容性修补
+ MacOS单元 (api to Mac OS)用于MacOS

FCL:
+ 在Windows环境下支持Interbase/Firebird,PostgreSQL数据库和MySQL 4.0
* 数据库驱动动态加载
* TSQLQuery现在使用缓存更新并完全可编辑
* 很多小错误和兼容性修补

Packages:
+ gtk2接口单元
* 64位兼容性修补
* 很多小错误和兼容性修补

IDE:
+ 矢量化unit窗口
* 改善x86-64的汇编和调试支持
* 改善SPARC的汇编和调试支持
* 一些bug修复

杂项:
+ 增加TXT输出到fpdoc
* 有些fpdoc的bug修复
+ MacOS下的演示程序

Version 1.9.6(也叫2.0.0-Rc1)

******************************************************************************
1.9.6(也叫2.0.0-Rc1)版新特性
******************************************************************************
编译:
+ x86_64/amd64 (Linux)编译
+ Sparc (Linux)编译
+ 支持PowerPC MorphOS
+ Mac OS (classic)编译(for MPW)
+ Netware Libc支持(-Tnetwlibc)
+ 在所有目标系统下支持寄存器变量(-Or)
+ MacPas编译模式(-Mmacpas)
* 更好的inlining支持
* 不容许再修改For loop循环变量
* $fpctarget扩展为<cpu>-<os>(除非目标系统有8.3限制),旧的$target被移除
* 隐含加载Variants单元
* 大量的bug修复

RTL:
+ x86_64/amd64 Linux支持
+ SPARC Linux支持
+ PowerPC morphos支持
+ Mac OS (classic)支持(except Sysutils and its dependants)
+ Netware Libc支持
+ 新的堆管理让内存更彻底地释放并返回给操作系统
+ tTThread.Synchronize支持
+ utf8bidi单元
+ 增加GetHeapStatus
+ 增加GetProcessID
+ 增加SysUtils.GetEnvironmentVariableCount和SysUtils.GetEnvironmentString
* gpm单元不再需要libgpm
+ 添加一些功能以改善和Delphi的兼容性
+ 添加System.GetProcessID和System.GetThreadID
+ 添加Dos.GetMsCount
+ 在Video for Win32中支持改变显示分辨率
+ 在OS/2下支持使用大内存(大于512M)
- 移除MaxAvail,MemAvail,HeapSize,因为在多任务的环境下它们不够可靠(有bug/返回值错误),

FCL:
+ 增加RTTIUtils单元
+ 增加fpcunit test-framework
* 大量的dbf和其他db方面的修复

FV:
* 更新fvision实现,第一次正式发布

IDE:
* 大量的改进和稳定性修补
* 支持最新的的 gdb 6.2.x和6.3.x发布

文档:
+ 大量内容更新
+ 更容易地浏览HTML文档。
* fpdoc用来产生所有单元的文档

杂项:
* Makefile在单独的目录中units/cpu-os/创建单元
* 更多的交叉汇编改善

******************************************************************************
1.9.4(也叫2.0.0-Beta3)版新特性
******************************************************************************
编译器:
+ ARM(Linux)编译器
+ 支持PowerPC Darwin (Mac OS X)
+ 支持reintroduce keyword
+ 增加预取(const mem)支持
+ MacPas编译模式
+ 用-gv生成可执行文件能运行在Valgrind >= 2.1的情况下
* 修正和调整寄存器分配
* 更好地支持预处理表达式$IF
* 更好地支持操作符重载
* 修正Win32动态链接库的导出表错误
* 挑出调试信息清理
* enum names in RTTI are now in their original case
* record alignment fixes
* 大量的bug修复

RTL:
+ 支持ARM Linux
+ 支持owerpc Darwin
+ 增加Sysutils.RaiseLastOSError
+ 增加Sysutils.GetLastOSError
+ 增加Classes.TOwnedCollection
+ 增加Sysutils.FileIsReadOnly
+ typinfo单元支持WideString和currency类型
* 更好地支持Libc based RTL (FPC_USE_LIBC)
* 为64位x86_64处理器增加转译
* 修正线程执行
* Linux use getdents syscall instead of deprecated readdir
* bug修复

FCL:
+ SDF DB backend
+ fpimage支持TGA
+ 与流相关的类支持WideString和currency类型
* 大量fpimage类的修正

杂项:
* 更好地支持跨平台开发
* 更新文档
* Testsuite updates to store testrun results in a database
* T estsuite updates for cross platform testing, with remote rsh/ssh support

******************************************************************************
1.9.2(也叫2.0.0-Beta2)版新特性
******************************************************************************

Compiler:
+ 编译PowerPC
+ 支持sse/sse2代码的生成
+ 支持“全局”属性
* 改善内嵌汇编支持
* 再次优化程序
* 默认使用寄存器调用协定
* 增加$fputype指令
+ 单个类型的属性可以有缺省值
+ 支持$IF声明语句
+ Intel汇编代码在inline中支持DQWORD
* 大量的bug修复

RTL级:
* Unix系统的运行库有更多改善
* 用fpc_use_libc编译RTL时允许使用libc代替syscalls
+ System.Initialize
+ Sysutils.ExecuteProcess
+ System.WideStringManager
+ System.PtrInt and System.PtrUInt
* IPv6支持
* 大量的bug修复

FCL:
+ 支持SQLite
* bug修复

杂项:
* 改善文档

******************************************************************************
1.9.0(也叫2.0.0-Beta1)版新特性
******************************************************************************

Compiler:
+ 动态数组
+ 接口
+ 变体类型
+ 完全支持WideString
+ 默认参数
+ cross name scope overloading
+ 支持的PowerPC,SPARC处理器和ARM处理器,安装包在未来几周会发布
+ 新的,更精密的寄存器分配
+ inlining across units
+ 寄存器调用约定
+ 内嵌汇编支持SSE和SSE2
+ PIC code generation
+ 新的语言模式:“Mac Pascal”
+ full boolean evaluation is now also available
+ 支持线程变量,可以使用{$threading on}来启用
* 支持Int64整数常数
* 在-Sd模式下改善和Delphi的兼容性
* 很多bug修复
* 改写大部份的编译器代码,以创造一个更稳定、小巧的和易于维护的编译器

RTL:
+ 多线程支持
* 完全改写Unix的运行库
* 提高和Delphi的兼容性
* 除了小部分代码,显著地改善了速度
* prepared for big endian and 64 Bit CPUs
* 很多bug修复

FCL:
+ 支持TDataset
+ HTML生成
+ 64位文件处理
* 很多bug修复

文档:
* 调整文档以反映新的语言特性

IDE:
* bug修复

杂项:
* 改善跨平台编译
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#2

帖子 eexpress » 2008-04-19 19:17

翻译project?
● 鸣学
chenxinyv
帖子: 7
注册时间: 2007-12-27 20:17

#3

帖子 chenxinyv » 2008-04-19 19:22

呵呵!因为一直用Delphi编程,所以自然对Lazarus比较感兴趣,翻译这个文档的目的是希望对FPC和Lazarus有更多的了解,这段时间一直在阅读Lazarus的源代码,对她颇有好感,很多人因为不了解她,所以没有看到她的优秀之处。。。
回复