Julia, ngôn ngữ lập trình đa nền tảng đạt phiên bản 1.9

julia lang

ulia là một ngôn ngữ năng động, cấp cao, hiệu suất cao dành cho máy tính kỹ thuật.

Vài ngày trước, Julia 1.9, phiên bản mới của ngôn ngữ lập trình, đã được công bố . Nó kết hợp các tính năng như hiệu năng cao, hỗ trợ kiểu dữ liệu động và các công cụ tích hợp cho lập trình song song. Cú pháp của Julia tương tự như MATLAB, với một số yếu tố được kế thừa từ Ruby và Lisp.

Julia nổi bật như một ngôn ngữ lập trình cấp cao, hiệu năng cao, đa nền tảng, đa mô hình, kiểu động, dành cho tính toán tổng quát, kỹ thuật và khoa học, với cú pháp tương tự như các môi trường tính toán khác.

Tin tức chính của Julia 1.9

Phiên bản Julia 1.9 mới này có một số cải tiến về thời gian chạy/trình biên dịch, bao gồm việc giảm đáng kể thời gian thực thi lần đầu. Chức năng biên dịch trước gói giờ đây lưu mã gốc vào một "pkgimage", có nghĩa là mã được tạo ra trong quá trình biên dịch trước sẽ không cần phải biên dịch lại sau khi tải gói. Có thể tắt chế độ pkgimages bằng tùy chọn "--pkgimages=no".

Một thay đổi đáng chú ý khác là các lệnh gọi với các đối số không đặc hiệu kiểu giờ đây có thể được tối ưu hóa bằng cách sử dụng phân tách hợp nhất để tiêm hoặc phân giải tĩnh, ngay cả khi có nhiều loại ứng viên gửi khác nhau. Điều này có thể cải thiện hiệu suất trong một số trường hợp mà kiểu đối tượng không được phân giải tĩnh hoàn toàn, bằng cách phân giải tĩnh các vị trí của các lệnh gọi " @nospecialize-d" và tránh biên dịch lại.

Các ký tự đơn lẻ hiện hỗ trợ cú pháp giống như ký tự chuỗi; những cú pháp đó có thể biểu thị các chuỗi UTF-8 không hợp lệ, như được cho phép bởi loại Char.

Ngoài ra, trên Linux và Windows, tùy chọn " --threads=auto " hiện cố gắng xác định số lượng bộ xử lý khả dụng dựa trên độ ưu tiên CPU, một mặt nạ thường được thiết lập trong môi trường HPC và điện toán đám mây.

Tùy chọn " --math-mode=fast " đã bị vô hiệu hóa và nên sử dụng macro " @fastmath " thay thế , macro này có ngữ nghĩa được xác định rõ ràng hơn. Ngoài ra, tham số " --threads " hiện có định dạng "auto | N[,auto|M]" , trong đó M chỉ định số lượng luồng tương tác cần được tạo.

Tùy chọn “ –heap-size-hint=<size> ” được thêm vào để thiết lập ngưỡng mà sau đó quá trình thu gom rác chủ động bắt đầu. Kích thước có thể được chỉ định bằng byte, kilobyte (1000 KB), megabyte (300 MB) hoặc gigabyte (1,5 GB).

Macro "@invoke" được giới thiệu trong phiên bản 1.7 hiện đã được xuất khẩu và có thể sử dụng. Ngoài ra, giờ đây nó sử dụng phương thức "Core.Typeof(x)" thay vì " Any " khi chú thích kiểu cho đối số "x" bị bỏ qua. Điều này là cần thiết để các kiểu được truyền làm đối số được xử lý chính xác.

Hơn nữa, `Threads.@spawn` hiện có thêm đối số đầu tiên tùy chọn là `:default` hoặc `:interactive`. Một tác vụ tương tác yêu cầu phản hồi có độ trễ thấp và được thiết kế để chạy ngắn hoặc thường xuyên. Các tác vụ tương tác sẽ chạy trên các luồng tương tác nếu được chỉ định khi Julia khởi động.

Những thay đổi đáng chú ý khác bao gồm:

  • Việc phủ định hàm vị ngữ "!f" hiện trả về một hàm tổng hợp "(!) ∘ f" thay vì một hàm ẩn danh.
  • Các chức năng phân chia kích thước hiện hoạt động trên nhiều kích thước: «mỗi lát”, “mỗi hàng” và “mỗi cột” trả về một đối tượng"Slices» cho phép vận chuyển cung cấp các phương pháp hiệu quả hơn.
  • vĩ mô «@kwdef» đã được thêm vào API công khai.
  • Đã khắc phục sự cố với thứ tự hoạt động trong "fld1".
  • Việc sắp xếp giờ đây luôn ổn định theo thời gian (QuickSort được thiết kế lại).
  • Số luồng BLAS mặc định hiện bằng số luồng CPU trên kiến ​​trúc ARM và bằng một nửa số luồng CPU trên các kiến ​​trúc khác.
  • Printf: Đã làm lại các thông báo lỗi cho các chuỗi không đúng định dạng để dễ đọc hơn.
  • Hồ sơ: Chức năng mới "Profile.take_heap_snapshot(file)" ghi tệp ở định dạng ".heapsnapshot" dựa trên JSON được Chrome hỗ trợ.
  • Đã thêm hỗ trợ cho đặc tả Unicode 15.
  • Các tổ hợp lồng nhau của các bộ dữ liệu và bộ dữ liệu ký tự được đặt tên hiện có thể được sử dụng làm tham số loại.

Cuối cùng, nếu bạn muốn tìm hiểu thêm, bạn có thể xem chi tiết tại liên kết sau.


Thêm vào danh sách nguồn ưu tiên trên Google.