Phát hành ngôn ngữ lập trình Crystal 1.2

Việc phát hành ngôn ngữ lập trình Crystal 1.2 đã được xuất bản, các nhà phát triển ngôn ngữ này đang cố gắng kết hợp sự tiện lợi của việc phát triển bằng ngôn ngữ Ruby với đặc tính hiệu suất ứng dụng cao của ngôn ngữ C. Cú pháp của Crystal gần giống nhưng không hoàn toàn tương thích với Ruby, mặc dù một số chương trình Ruby chạy mà không sửa đổi. Mã trình biên dịch được viết bằng Crystal và được phân phối theo giấy phép Apache 2.0.

Ngôn ngữ sử dụng tính năng kiểm tra kiểu tĩnh, được triển khai mà không cần chỉ định rõ ràng loại biến và đối số phương thức trong mã. Các chương trình tinh thể được biên dịch thành các tệp thực thi, với các macro được đánh giá và mã được tạo tại thời điểm biên dịch. Trong các chương trình Crystal, có thể kết nối các liên kết được viết bằng C. Việc song song thực thi mã được thực hiện bằng cách sử dụng từ khóa “spawn”, cho phép bạn chạy tác vụ nền không đồng bộ mà không chặn luồng chính, dưới dạng các luồng nhẹ gọi là sợi.

Thư viện chuẩn cung cấp một tập hợp lớn các chức năng phổ biến, bao gồm các công cụ để xử lý CSV, YAML và JSON, các thành phần để tạo máy chủ HTTP và hỗ trợ WebSocket. Trong quá trình phát triển, sẽ rất thuận tiện khi sử dụng lệnh “crystal play”, lệnh này tạo giao diện web (localhost:8080 theo mặc định) để thực thi mã tương tác bằng ngôn ngữ Crystal.

Sự thay đổi chính:

  • Đã thêm khả năng gán một lớp con của lớp chung cho một thành phần của lớp cha. lớp Foo(T); lớp cuối Bar(T) < Foo(T); cuối x = Foo x = Thanh
  • Giờ đây, macro có thể sử dụng dấu gạch dưới để bỏ qua giá trị trong vòng lặp for. {% for _, v, i in {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • Đã thêm phương thức “file_exists?” vào macro. để kiểm tra sự tồn tại của một tập tin.
  • Thư viện chuẩn hiện hỗ trợ số nguyên 128 bit.
  • Đã thêm mô-đun Indexable::Mutable(T) với việc triển khai các hoạt động nâng cao cho các bộ sưu tập như BitArray và Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • Đã thêm phương thức XML::Node#namespace_def định để trích xuất một không gian tên cụ thể từ XML.
  • Các phương thức IO#write_utf8 và URI.encode không còn được dùng nữa và cần được thay thế bằng IO#write_string và URI.encode_path.
  • Hỗ trợ cho kiến ​​trúc x32 86 bit đã được chuyển sang cấp độ thứ hai (các gói tạo sẵn không còn được tạo nữa). Việc chuyển sang cấp hỗ trợ đầu tiên cho kiến ​​trúc ARM64 đang được chuẩn bị.
  • Công việc tiếp tục đảm bảo hỗ trợ đầy đủ cho nền tảng Windows. Đã thêm hỗ trợ cho ổ cắm Windows.
  • Một gói phổ quát đã được thêm vào cho macOS, hoạt động cả trên các thiết bị có bộ xử lý x86 và trên thiết bị có chip Apple M1.

Nguồn: opennet.ru

Thêm một lời nhận xét