Phát hành ngôn ngữ lập trình Nim 1.4.0

Một phiên bản mới của ngôn ngữ lập trình hệ thống Nim đã được phát hành, phiên bản này đã kỷ niệm một năm thành lập vào tháng 9 này. phiên bản ổn định đầu tiên. Ngôn ngữ này có cú pháp tương tự như Python và gần giống như C++ về hiệu năng. Dựa theo Câu Hỏi Thường Gặp Ngôn ngữ vay mượn rất nhiều từ (theo thứ tự đóng góp): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.


Hoạt động ở mọi nơi nhờ khả năng biên dịch trong C/C++/Objective-C/JS. Nó hỗ trợ macro, OOP, generic, ngoại lệ, trao đổi mã nóng và nhiều hơn nữa. Giấy phép: MIT.

Những thay đổi đáng kể nhất:

  • Có một trình thu gom rác ORC mới sử dụng thuật toán từ ARC, nhưng đồng thời xử lý các tham chiếu vòng tròn theo cách đặc biệt. Được kích hoạt bởi tùy chọn -gc:orc. Về sự khác biệt ARC/ORC có một bài viết tuyệt vời.

  • Một chế độ dành cho các định nghĩa hàm nghiêm ngặt đã được thêm vào, cho phép kiểm tra bổ sung về khả năng thay đổi của đối tượng. Được kích hoạt thông qua pragma {.experimental: "strictFuncs".} hoặc thông qua khóa --experimental:strictFuncs.

  • Từ khóa from bây giờ có thể được sử dụng làm toán tử.

  • Đã thêm .noalias pragma. Nó ánh xạ tới từ khóa hạn chế C để tăng hiệu quả mà từ khóa có thể mang lại.

  • Giờ đây, các cảnh báo cụ thể có thể được chuyển thành lỗi thông qua --warningAsError[X]:on|off.

  • Lệnh mới: nim r main.nim [args...], biên dịch và chạy main.nim, đồng thời bao gồm --usenimcache để kết quả được lưu trữ trong $nimcache/main$exeExt, sử dụng logic tương tự như nim c - r để thoát khỏi quá trình biên dịch lại khi nguồn không thay đổi. Ví dụ:

nim r trình biên dịch/nim.nim --help # được biên dịch lần đầu tiên
echo 'nhập os; echo getCurrentCompilerExe()’ | nim r - # cái này cũng được
nim r trình biên dịch/nim.nim --fullhelp # không cần biên dịch lại
nim r —nimcache:/tmp main # nhị phân được lưu trong /tmp/main

  • Đã thêm gợi ý mới -hint:msgOrigin, gợi ý này sẽ hiển thị nơi trình biên dịch tạo ra các thông báo lỗi/cảnh báo. Điều này hữu ích khi không rõ tin nhắn đến từ đâu.

  • Đã thêm cờ —backend:js|c|cpp|objc (hoặc -b:js, v.v.) để thay đổi phần phụ trợ.

  • Đã thêm cờ --usenimcache vào các tệp nhị phân đầu ra cho nimcache.

  • Các khóa đã bị xóa: --oldNewlines, --laxStrings, --oldast, --oldgensym

  • Tiện ích nimsuggest hiện không chỉ hiển thị phần khai báo trước mà còn hiển thị vị trí triển khai cho yêu cầu def.

Ngoài ra, nhiều thay đổi đã được thêm vào thư viện chuẩn và sửa nhiều lỗi.

Nguồn: linux.org.ru