Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 7333|回复: 4

Free Pascal的新特性

[复制链接]

该用户从未签到

发表于 2009-4-25 15:48:07 | 显示全部楼层 |阅读模式
这是一份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_page.php查看bug追踪报告可以看到
详细的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修复

评分

参与人数 1威望 +20 收起 理由
猫工 + 20 优秀文章

查看全部评分

回复

使用道具 举报

该用户从未签到

发表于 2009-5-21 09:55:22 | 显示全部楼层
学习,学习。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2009-8-8 18:27:53 | 显示全部楼层
新特性如何使用?值得思考。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2010-8-25 00:00:18 | 显示全部楼层
感谢楼主分享.

回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2014-2-4 20:39:21 | 显示全部楼层
* 内部连接器,能为Win32,win64和WinCE构造较小的可执行文件,编译时占用内存少,
     使用如Lazarus组件库之类的大型Framework时编译速度更快;
这一条很感兴趣。

另外,支持DS这个用于哪里呢?
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2026-3-4 15:54 , Processed in 0.037040 second(s), 11 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表