✨Free Pascal

Free Pascal

Free Pascal Compiler (FPC) là một trình biên dịch cho các ngôn ngữ lập trình có liên quan chặt chẽ, Pascal và Object Pascal. Nó là phần mềm tự do được phát hành theo Giấy phép Công cộng GNU, với các điều khoản ngoại lệ cho phép liên kết tĩnh với các thư viện thời gian chạy và các gói của nó cho bất kỳ mục đích nào kết hợp với bất kỳ giấy phép phần mềm nào khác.

Nó hỗ trợ ngôn ngữ Object Pascal của riêng nó cũng như các ngôn ngữ của một số trình biên dịch gia đình Pascal khác đến một mức độ nhất định, bao gồm các trình biên dịch Turbo Pascal, Delphi, và một số trình biên dịch Macintosh lịch sử. Ngôn ngữ được chọn trên cơ sở mỗi đơn vị (mô-đun) và có thể sử dụng nhiều ngôn ngữ cho mỗi chương trình.

Free Pascal theo triết lý lập trình viết một lần, dịch bất kỳ đâu, và có sẵn cho nhiều kiến trúc CPU và hệ điều hành. Nó hỗ trợ hợp ngữ trên dòng lệnh và bao gồm một chương trình lắp ráp nội bộ có khả năng phân tích cú pháp một số phương ngữ theo phong cách [https://svn.freepascal.org/svn/fpc/trunk/compiler/x86/rax86att.pas AT&T], [https://svn.freepascal.org/svn/fpc/trunk/compiler/arm/raarmgas.pas GAS] và [https://svn.freepascal.org/svn/fpc/trunk/compiler/x86/rax86int.pas Intel].

Các dự án riêng biệt tồn tại để tạo thuận lợi cho việc phát triển ứng dụng giao diện người dùng đồ họa đa nền tảng (GUI), một ứng dụng nổi bật nhất là môi trường phát triển tích hợp Lazarus (IDE).

Ngôn ngữ được hỗ trợ

Ban đầu, Free Pascal áp dụng ngôn ngữ chuẩn thực tế của các lập trình viên Pascal, Borland Pascal nhưng sau đó áp dụng bản Delphi. Từ phiên bản 2.0 trở đi, khả năng tương thích Delphi 7 đã được nâng cao triển khai hoặc cải tiến liên tục.

Dự án có khái niệm chế độ biên dịch và các nhà phát triển đã làm rõ rằng họ sẽ kết hợp các bản vá làm việc cho các phương ngữ chuẩn của Viện tiêu chuẩn quốc gia Hoa Kỳ (ANSI) và Tổ chức tiêu chuẩn hóa quốc tế (ISO), để tạo ra một chế độ tuân thủ tiêu chuẩn.

Một nỗ lực nhỏ đã được thực hiện để hỗ trợ một số cú pháp Apple Pascal để dễ dàng giao tiếp với Hệ điều hành Mac cổ điển và macOS. Do phương ngữ của Apple thực hiện một số tính năng Pascal tiêu chuẩn mà Turbo Pascal và Delphi bỏ qua, Free Pascal tương thích với ISO nhiều hơn một chút.

Phiên bản phát hành 2.2.x không thay đổi đáng kể mục tiêu phương ngữ vượt ra ngoài Delphi 7, thay vào đó chúng nhắm đến khả năng tương thích gần hơn. Dự án vẫn còn thiếu chức năng Delphi của việc xuất khẩu hỗ trợ trình biên dịch của các lớp từ các thư viện chia sẻ, điều này rất hữu ích, ví dụ, đối với Lazarus, thực hiện các gói thành phần.

Tính đến năm 2011, một số tính năng cụ thể của Delphi 2006 đã được thêm vào trong nhánh phát triển và một số công việc bắt đầu cho các tính năng mới trong Delphi 2009 (đáng chú ý nhất là việc bổ sung kiểu UnicodeString ) đã được hoàn thành. Nhánh phát triển cũng có tính năng mở rộng Objective-Pascal cho giao tiếp Objective-C (Cocoa).

Kể từ phiên bản 2.7.1, Free Pascal đã thực hiện chế độ ISO Pascal cơ bản, mặc dù nhiều thứ như thủ tục Get và Put và khái niệm biến tập tin đệm để xử lý tệp vẫn không có.

Kể từ phiên bản 3.0.0, chế độ ISO Pascal khá hoàn chỉnh, với một lỗi còn lại được sửa trong 3.1.1 sau đó. Nó đã có thể biên dịch mã P5 của standardpascal.org mà không cần thay đổi gì.

Lịch sử

Những năm đầu

Free Pascal được tạo ra khi Borland nói rõ rằng việc phát triển Borland Pascal cho DOS sẽ dừng lại với phiên bản 7, được thay thế bằng một sản phẩm chỉ có trên Windows, mà sau này trở thành Delphi.

Sinh viên Florian Paul Klämpfl bắt đầu phát triển trình biên dịch riêng của mình được viết bằng ngôn ngữ Turbo Pascal và đã tạo mã 32-bit cho bộ mở rộng DOS GO32v1, được sử dụng và phát triển bởi dự án Nền tảng lập trình GNU (DJGPP) của DJ vào thời điểm đó.

Ban đầu, trình biên dịch là một file thực thi DOS 16 bit được biên dịch bởi Turbo Pascal. Sau hai năm, trình biên dịch đã có thể biên dịch chính nó và trở thành một trình thực thi 32-bit.

Mở rộng

Trình biên dịch 32 bit ban đầu được xuất bản trên Internet, và những người đóng góp đầu tiên đã tham gia dự án. Sau này một bản chuyển sang Linux đã được Michael van Canneyt tạo ra, 5 năm trước khi trình biên dịch Borland Kylix được phổ biến. 

Chương trình chuyển đổi cho DOS đã được điều chỉnh để sử dụng trong OS/2 bằng cách sử dụng Eberhard Mattes eXtender (EMX) làm cho OS/2 trở thành mục tiêu biên dịch được hỗ trợ thứ hai. Cũng như Florian Klämpfl, tác giả ban đầu, Daniël Mantione cũng đóng góp đáng kể để thực hiện điều này, cung cấp cổng gốc của thư viện thời gian chạy cho OS/2 và EMX. Trình biên dịch được cải thiện dần dần, và phiên bản DOS di chuyển đến bộ mở rộng GO32v2. Điều này lên đến đỉnh điểm trong bản phát hành 0.99.5, được sử dụng rộng rãi hơn nhiều so với các phiên bản trước và là bản phát hành cuối cùng chỉ nhằm tuân thủ Turbo Pascal; các bản phát hành sau này đã thêm chế độ tương thích cho Delphi. Bản phát hành này cũng được chuyển đến các hệ thống sử dụng bộ xử lý gia đình Motorola 68000 (m68k).

Với việc phát hành 0,99,8 mục tiêu Win32 đã được thêm vào, và bắt đầu được thực hiện với việc kết hợp một số tính năng Delphi. Quá trình ổn định cho bản phát hành không phải beta đã bắt đầu và phiên bản 1.0 được phát hành vào tháng 7 năm 2000. Loạt phiên bản 1.0.x được sử dụng rộng rãi, trong kinh doanh và giáo dục. Đối với phiên bản 1.0.x, phiên bản chuyển của 68k CPU được làm lại và trình biên dịch tạo mã ổn định cho một số hệ điều hành giống như Unix và AmigaOS 68k.

Phiên bản 2

Trong quá trình ổn định những gì sẽ trở thành 1.0.x, và cũng khi chuyển sang các hệ thống Motorola 68k, rõ ràng là thiết kế của trình tạo mã là quá hạn chế về nhiều mặt. Các vấn đề chính là việc thêm bộ vi xử lý có nghĩa là viết lại bộ tạo mã và việc phân bổ đăng ký dựa trên nguyên tắc luôn giữ ba thanh ghi miễn phí giữa các khối xây dựng, không linh hoạt và khó bảo trì.

Vì những lý do này, chuỗi 1.1.x phân nhánh từ nhánh chính 1.0.x vào tháng 12 năm 1999. Lúc đầu, các thay đổi chủ yếu là dọn dẹp và viết lại thiết kế lại cho tất cả các phần của trình biên dịch. Trình tạo mã và trình cấp phát đăng ký cũng được viết lại. Bất kỳ khả năng tương thích còn thiếu nào của Delphi đã được thêm vào.

Công việc trên 1.1.x tiếp tục chậm nhưng đều đặn. Vào cuối năm 2003, một phiên bản cho máy PowerPC đang hoạt động đã sẵn sàng, tiếp theo là một phiên bản cho ARM vào mùa hè năm 2004, một phiên bản cho SPARC vào mùa thu năm 2004 và một phiên bản cho x86-64-AMD64 vào đầu năm 2004, làm cho trình biên dịch trở nên có sẵn cho một nền tảng 64 bit. 

Vào tháng 11 năm 2003, bản phát hành beta đầu tiên của nhánh 1.1.x đã được đóng gói và đánh số 1.9.0. Chúng nhanh chóng được theo sau bởi các phiên bản 1.9.2 và 1.9.4; sau này giới thiệu hỗ trợ OS X. Công việc tiếp tục với phiên bản 1.9.6 (tháng 1 năm 2005), 1.9.8 (cuối tháng 2 năm 2005), 2.0.0 (tháng 5 năm 2005), 2.0.2 (tháng 12 năm 2005) và 2.0.4 (tháng 8 năm 2006).

Phiên bản 2.2.x

Trong năm 2006, một số các công việc chính được lên kế hoạch cho phiên bản 2.2, chẳng hạn như viết lại hệ thống đơn vị, vẫn chưa bắt đầu, và nó đã được quyết định thay vì bắt đầu ổn định các tính năng đã được thực hiện.

Một số động cơ cho sự thay đổi lộ trình này là nhu cầu của dự án Lazarus, đặc biệt là mối liên kết nội bộ, hỗ trợ cho Win64, Windows CE, và OS X trên x86 và các tính năng liên quan như DWARF. Sau phiên bản 2.1.2 và 2.1.4, phiên bản 2.2.0 được phát hành vào tháng 9 năm 2007, tiếp theo là phiên bản 2.2.2 vào tháng 8 năm 2008 và phiên bản 2.2.4 vào tháng 3 năm 2009.

Phiên bản2.2.x đã cải thiện rất nhiều sự hỗ trợ cho giao diện Mô hình đối tượng ActiveX và Thành phần (COM), và Object Linking and Embedding (OLE), mặc dù các lỗi vẫn đang được tìm thấy. Phần chuyển giao giao diện sử dụng từ khóa implement đã được triển khai một phần, nhưng không hoàn thành kịp vào tháng 3 năm 2011. Hỗ trợ thư viện cho ActiveX cũng được cải thiện.

Một tính năng chính khác là trình liên kết nội bộ cho Win32, Win64 và Windows CE, giúp cải thiện liên kết thời gian và sử dụng bộ nhớ, và làm cho chu trình biên dịch-liên kết chạy nhanh hơn trong Lazarus. Hiệu quả cho việc loại bỏ liên kết thông minh, hoặc mã chết, cũng được cải thiện.

Các tính năng mới nhỏ bao gồm cải thiện DWARF (2/3) hỗ trợ định dạng gỡ lỗi và tối ưu hóa như đệ quy đuôi, bỏ sót các khung ngăn xếp không cần thiết và tối ưu hóa dựa trên loại bỏ phổ biến dựa trên đăng ký (CSE). Việc thực hiện đầu tiên hỗ trợ lập trình tổng quát cũng trở nên có sẵn, nhưng chỉ có tính thử nghiệm.

Phiên bản 2.4.x

Loạt phát hành 2.4.x có bộ mục tiêu rõ ràng hơn so với các bản phát hành trước đó. Việc viết lại hệ thống đơn vị đã bị trì hoãn một lần nữa, và chi nhánh đã trở thành 2.4 đã được tạo ra để giữ các cam kết rủi ro từ 2.2 để ổn định nó. Chủ yếu là những cam kết rủi ro này có nhiều cải tiến liên quan đến các nền tảng mới, Mac PowerPC 64, Mac  x86-64, và nhiều bản sửa lỗi cho kiến trúc ARM và x86-64 nói chung, cũng như DWARF.

Các cải tiến khác của trình biên dịch bao gồm tối ưu hóa toàn bộ chương trình (WPO) và hỗ trợ ảo hóa và hỗ trợ giao diện nhị phân nhúng (EABI) của ARM.

Sau đó, trong chu kỳ 2.2, việc hỗ trợ tài nguyên giống như Delphi (dựa trên các phần đặc biệt trong tệp nhị phân thay vì dùng hằng số Pascal) đã được thêm vào. Tính năng này, cần thiết đối với Lazarus, trở thành điểm nhấn chính của phần mềm phiên bản nhánh này.

Các phần bổ sung nhỏ hơn khác là một trình quản lý bộ nhớ để cải thiện hiệu năng quản lý heap trong môi trường luồng, cải tiến nhỏ trong tương thích Delphi như OleVariant và các cải tiến trong giao diện được ủy nhiệm.

Vào ngày 1 tháng 1 năm 2010, Free Pascal 2.4.0 đã được phát hành, tiếp theo vào ngày 13 tháng 11 năm 2010, bởi bản sửa lỗi sửa lỗi 2.4.2, với sự hỗ trợ cho các vòng lặp, vòng kín, các lớp trừu tượng và các thay đổi khác.

Phiên bản 2.6.x

Vào tháng 1 năm 2012, Free Pascal 2.6 đã được phát hành. Phiên bản đầu tiên này từ loạt phát hành 2.6 cũng hỗ trợ Objective Pascal trên OS X và các mục tiêu iOS và triển khai nhiều cải tiến nhỏ và sửa lỗi. Vào tháng 2 năm 2013, FPC 2.6.2 đã được phát hành. Nó chứa phiên bản NetBSD và OpenBSD lần đầu tiên kể từ 1.0.10, dựa trên các cổng mới. Vào tháng 3 năm 2014, bản phát hành điểm cuối cùng trong loạt 2,6, 2.6.4, đã được phát hành, với hầu hết các bản cập nhật cơ sở dữ liệu (fcl-db).

Phiên bản 3.0.x

Phiên bản 3.0.0 được phát hành vào ngày 25 tháng 11 năm 2015 và là bản phát hành chính đầu tiên kể từ Januari 1, 2012. Nó chứa nhiều tính năng ngôn ngữ mới: Các tính năng mới của FPC 3.0

Các phiên bản sau đó

Phiên bản 3.0.2 đã được phát hành vào ngày 15 tháng 2 năm 2017 và bao gồm sửa lỗi và cập nhật trình biên dịch nhỏ. Phiên bản 3.0.4 đã được phát hành vào ngày 28 tháng 11 năm 2017. Nó bao gồm nhiều cải tiến ngôn ngữ so với các phiên bản trước như trình liên kết nội bộ cho Định dạng thực thi và liên kết (ELF), Arm AARCH64 cho iOS và Linux, nền tảng i8086 đã được khôi phục, thư viện mở rộng và nhiều hơn thế nữa. 

👁️ 2 | 🔗 | 💖 | ✨ | 🌍 | ⌚
**Free Pascal Compiler** (**FPC**) là một trình biên dịch cho các ngôn ngữ lập trình có liên quan chặt chẽ, Pascal và Object Pascal. Nó là phần mềm tự do được phát hành theo Giấy
**Pascal** là một ngôn ngữ lập trình cho máy tính thuộc dạng mệnh lệnh và thủ tục, được Niklaus Wirth phát triển vào năm 1970. Pascal là ngôn ngữ lập trình đặc biệt thích hợp
**Object Pascal** chỉ đến một nhánh của phát sinh hướng đối tượng của Pascal, được biết đến chủ yếu với vai trò ngôn ngữ lập trình chính của Delphi. ## Lịch sử ban đầu tại
**Turbo Pascal** là một trình biên dịch và một môi trường phát triển tích hợp (IDE) cho ngôn ngữ Pascal chạy trên nền hệ điều hành MS-DOS và CP/M, được phát triển bởi hãng Borland.
**Lazarus** là một IDE (Integrated Development Environment) được phát triển theo mô hình RAD (rapid application development - phát triển ứng dụng nhanh chóng). Sử dụng trình biên dịch Free Pascal. Được dùng để phát
Đây là danh sách **Phần mềm mã nguồn mở**: là phần mềm máy tính được cấp phép giấy phép mã nguồn mở. Bài viết này không có tham vọng liệt kê tất cả những phần
**Đặc tính** (tiếng Anh: _property_), trong một số ngôn ngữ lập trình hướng đối tượng, là một loại đặc biệt của thành viên lớp, trung gian chức năng giữa một trường (hay thành viên dữ
[[Tập tin:Nexus 4.png|thumb| Nexus 4 là một trong những thiết bị "thân thiện với lập trình viên" thuộc dòng sản phẩm Google Nexus]] **Phát triển phần mềm Android** là quy trình tạo ra các ứng
**_Võ sĩ giác đấu II_** (tựa gốc: **_Gladiator II_**) là một bộ phim điện ảnh Anh – Mỹ thuộc thể loại sử thi – hành động ra mắt vào năm 2024 do Ridley Scott làm
Dưới đây là danh sách các môi trường phát triển tích hợp ## Các môi trường phát triển tích hợp nguồn mở/miễn phí ### Các môi trường phát triển tích hợp đa nền miễn phí
nhỏ|GNU Debugger Trình gỡ lỗi GNU (GNU Debugger) hay còn gọi là GDB là một chương trình gỡ lỗi chuẩn cho hệ thống phần mềm GDB. Nó là một trình gỡ lỗi di động có
**Subversion** là một phần mềm mã nguồn mở dùng để quản lý và kiểm tra các phiên bản mã nguồn khác nhau trong quá trình phát triển phần mềm. Subversion cũng còn được gọi là
**Kotlin** là một ngôn ngữ lập trình kiểu tĩnh chạy trên máy ảo Java (JVM) và có thể được biên dịch sang mã nguồn Java hay sử dụng cơ sở hạ tầng trình biên dịch
Trong lập trình hướng đối tượng (OOP), **vòng đời đối tượng** (tiếng Anh: _object lifetime_ hay _life cycle_) của một đối tượng là khoảng thời gian giữa việc tạo ra và hủy đi của đối
Trong khoa học máy tính, **reflection** (có thể dịch là "phản tỉnh", "tự xét mình") là việc tiến trình có khả năng xem xét, nội quan, và sửa đổi kết cấu cùng với hành trạng
thumb|Minh họa mã nguồn [[Java (programming language)|Java với comment **mở đầu** được biểu thị bằng màu **đỏ** và comment **nội dòng** bằng màu **lục**. **Mã chương trình** là bằng màu **lam**.]]Trong lập
**Giải Grammy lần thứ 53** được tổ chức vào ngày 13 tháng 2 năm 2011 tại Trung tâm Staples ở Los Angeles, được truyền hình bởi kênh CBS. Barbra Streisand được vinh danh là nghệ
**Bộ trình dịch GNU** ( - thường được viết tắt thành **GCC**) là một tập hợp các trình biên dịch được thiết kế cho nhiều ngôn ngữ lập trình khác nhau. GCC là một thành
**Kinh Kālāma**, còn có tên gọi khác là **Kinh Kesamutti**, là một bài kinh của Phật được ghi trong Tăng chi Bộ (3.65) của Tam Tạng kinh điển. Nó thường được những người theo truyền
thumb|right|Trung Quốc thumb|[[Cờ năm màu (Ngũ sắc kỳ 五色旗), biểu thị khái niệm Ngũ tộc cộng hòa. ]] thumb|[[Lương Khải Siêu, người đưa ra khái niệm Dân tộc Trung Hoa. ]] [[Vạn Lý Trường Thành,
Đây là danh sách các ngôn ngữ lập trình đáng chú ý, được nhóm theo loại. Vì không có sơ đồ phân loại bao quát cho các ngôn ngữ lập trình, nên trong nhiều trường
**C** là một ngôn ngữ mệnh lệnh được phát triển từ đầu thập niên 1970 bởi Dennis Ritchie để dùng trong hệ điều hành UNIX. Từ đó, ngôn ngữ này đã lan rộng ra nhiều
**Cú pháp ngôn ngữ (lập trình) C** là tập hợp các quy tắc nhằm xác định cách thức để viết và dịch trong ngôn ngữ lập trình C. :Thí dụ:
 // Dòng này sẽ
**Unix** (; được đăng ký nhãn hiệu là **UNIX**) là một họ hệ điều hành máy tính đa nhiệm, đa người dùng được viết vào những năm 1960 và 1970 do một số nhân viên
Trong ngành khoa học máy tính, **quy hoạch động** (tiếng Anh: _dynamic programming_) là một phương pháp giảm thời gian chạy của các thuật toán thể hiện các tính chất của các bài toán con
**Madonna Louise Ciccone** (; ; sinh ngày 16 tháng 8 năm 1958) là một nữ ca sĩ kiêm sáng tác nhạc và diễn viên người Mỹ. Được gọi là "Nữ hoàng nhạc pop", Madonna gây
Sau đây là danh sách các trò chơi do Konami phát triển, xuất bản hoặc cấp phép. ## Máy game thùng arcade ### 1978–1989 ; 1978 :* _Block Game_ :* _Block Invader_ :* _Space Ship_
**Giải đua ô tô Công thức 1 Bỉ 2017** (có thể hiểu là **2017 Formula 1 Pirelli Belgian Grand Prix**) là một cuộc đua Công thức 1 dự kiến được tổ chức ngày 27 tháng
**_1000 Forms of Fear_** là album phòng thu thứ sáu của nữ ca sĩ người Úc Sia. Album được phát hành vào ngày 4 tháng 7 năm 2014 thông qua các hãng đĩa Monkey Puzzle
**Andrew James Clutterbuck **(sinh ngày 14 tháng 9 năm 1973) được biết đến với nghệ danh **Andrew Lincoln**, là một diễn viên người Anh. Ông được biết đến nhiều nhất với vai diễn nhân vật