Có sẵn ngôn ngữ Dart 2.14 và khung Flutter 2.5

Google đã xuất bản bản phát hành ngôn ngữ lập trình Dart 2.14, ngôn ngữ này tiếp tục phát triển một nhánh được thiết kế lại hoàn toàn của Dart 2, khác với phiên bản gốc của ngôn ngữ Dart ở chỗ sử dụng kiểu gõ tĩnh mạnh (các loại có thể được suy ra tự động, vì vậy việc chỉ định loại là không cần thiết, nhưng kiểu gõ động không còn được sử dụng và tính toán ban đầu loại được gán cho biến và việc kiểm tra loại nghiêm ngặt sau đó được áp dụng).

Các tính năng của ngôn ngữ Dart:

  • Cú pháp quen thuộc và dễ học, tự nhiên dành cho lập trình viên JavaScript, C và Java.
  • Đảm bảo khởi chạy nhanh và hiệu suất cao cho tất cả các trình duyệt web hiện đại và nhiều loại môi trường khác nhau, từ thiết bị di động đến máy chủ mạnh mẽ.
  • Khả năng xác định các lớp và giao diện cho phép đóng gói và tái sử dụng các phương thức và dữ liệu hiện có.
  • Việc chỉ định loại giúp gỡ lỗi và xác định lỗi dễ dàng hơn, làm cho mã rõ ràng và dễ đọc hơn, đồng thời đơn giản hóa việc sửa đổi và phân tích của các nhà phát triển bên thứ ba.
  • Các loại được hỗ trợ bao gồm: các loại băm, mảng và danh sách, hàng đợi, loại số và chuỗi, loại để xác định ngày và giờ, biểu thức chính quy (RegExp). Có thể tạo các loại của riêng bạn.
  • Để tổ chức thực thi song song, đề xuất sử dụng các lớp có thuộc tính cô lập, mã của thuộc tính này được thực thi hoàn toàn trong không gian biệt lập trong một vùng bộ nhớ riêng, tương tác với quy trình chính bằng cách gửi tin nhắn.
  • Hỗ trợ sử dụng các thư viện giúp đơn giản hóa việc hỗ trợ và gỡ lỗi các dự án web lớn. Việc triển khai các chức năng của bên thứ ba có thể được đưa vào dưới dạng thư viện dùng chung. Các ứng dụng có thể được chia thành nhiều phần và giao phó việc phát triển từng phần cho một nhóm lập trình viên riêng biệt.
  • Một bộ công cụ được tạo sẵn để hỗ trợ phát triển bằng ngôn ngữ Dart, bao gồm việc triển khai các công cụ gỡ lỗi và phát triển động với tính năng sửa mã nhanh chóng (“chỉnh sửa và tiếp tục”).
  • Để đơn giản hóa việc phát triển bằng ngôn ngữ Dart, nó đi kèm với SDK, trình quản lý gói, trình phân tích mã tĩnh Dart_analyzer, một bộ thư viện, môi trường phát triển tích hợp DartPad và các plugin hỗ trợ Dart cho IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 và Vim.
  • Các gói bổ sung với thư viện và tiện ích được phân phối thông qua kho lưu trữ pub, nơi có hơn 20 nghìn gói.

Những thay đổi lớn trong bản phát hành Dart 2.14:

  • Một toán tử dịch ba mới (>>>) đã được thêm vào, không giống như toán tử “>>”, thực hiện không phải phép dịch số học mà là một phép dịch logic hoạt động mà không tính đến bit dấu (sự dịch chuyển được thực hiện mà không chia thành số dương và số âm).
  • Đã xóa hạn chế đối với các đối số kiểu ngăn cản việc sử dụng các loại hàm chung làm đối số kiểu. Ví dụ: bây giờ bạn có thể chỉ định: Danh sách muộn (T)>idHàm; gọi lại var = [ (Giá trị T) => giá trị]; Hàm S muộn (T)>(S) f;
  • Cho phép chỉ định đối số với các loại trong chú thích như @Deprecated. Ví dụ: bây giờ bạn có thể chỉ định: @TypeHelper (42, “Ý nghĩa”)
  • Các phương thức tĩnh hash, hashAll và hashAllUnordered đã được thêm vào thư viện chuẩn (lõi) trong lớp Object. Lớp DateTime đã cải thiện việc xử lý giờ địa phương khi chuyển đổi đồng hồ giữa thời gian mùa hè và mùa đông không chia hết cho một giờ (ví dụ: ở Úc sử dụng độ lệch 30 phút). Gói ffi đã bổ sung hỗ trợ cho cơ chế phân bổ bộ nhớ đấu trường, cơ chế này tự động giải phóng tài nguyên. Gói ffigen đã thêm khả năng tạo định nghĩa typedef của các loại Dart từ ngôn ngữ C.
  • 250 gói phổ biến nhất từ ​​kho lưu trữ pub.dev và 94% trong số 1000 gói hàng đầu đã được chuyển sang sử dụng chế độ “an toàn null”, chế độ này sẽ tránh được sự cố do cố gắng sử dụng các biến có giá trị không được xác định và được đặt thành “Null”. ” " Chế độ này ngụ ý rằng các biến không thể có giá trị null trừ khi chúng được gán giá trị null một cách rõ ràng. Chế độ này tôn trọng nghiêm ngặt các loại biến, cho phép trình biên dịch áp dụng các tối ưu hóa bổ sung. Việc tuân thủ loại được kiểm tra tại thời điểm biên dịch, ví dụ: nếu bạn cố gắng gán giá trị “Null” cho một biến có loại không ngụ ý trạng thái không xác định, chẳng hạn như “int”, thì lỗi sẽ được hiển thị.
  • Các bộ quy tắc thống nhất cho trình phân tích mã (linter) được đề xuất, cung cấp hỗ trợ đồng thời để kiểm tra việc tuân thủ các nguyên tắc về kiểu mã cho Dart và khung Flutter. Vì lý do lịch sử, các quy tắc mã hóa cho Flutter và Dart là khác nhau, ngoài ra, đối với Dart có hai bộ quy tắc được sử dụng - quy tắc mang tính mô phạm của Google và quy tắc từ cộng đồng nhà phát triển Dart. Dart 2.14 giới thiệu một bộ quy tắc chung mới dành cho kẻ nói dối, được quyết định sử dụng theo mặc định trong các dự án Dart mới và trong Flutter SDK. Bộ này bao gồm các quy tắc cốt lõi (gói lints/core.yaml), các quy tắc bổ sung được đề xuất (lints/recommends.yaml) và các đề xuất dành riêng cho Flutter (flutter_lints/flutter.yaml). Người dùng các quy tắc mô phạm nên chuyển sang sử dụng kiểu mã hóa mới dựa trên các đề xuất từ ​​tài liệu Dart.
  • Trong bộ định dạng, các tối ưu hóa đã được thực hiện đối với việc định dạng các khối mã xếp tầng, điều này có thể cải thiện đáng kể hiệu suất định dạng và tránh diễn giải mơ hồ về quyền sở hữu các thành phần biểu thức. Ví dụ: gọi "..doIt" trong biểu thức "var result = errorState ? foo : bad..doIt()” không liên quan đến phần điều kiện của khối “bad”, mà liên quan đến toàn bộ biểu thức, vì vậy khi định dạng nó bây giờ được tách ra: var result = errorState ? foo : xấu ..doIt();
  • Hỗ trợ cho bộ xử lý Apple M1 (Silicon) đã được thêm vào SDK, ngụ ý cả khả năng chạy Dart VM, các tiện ích và thành phần SDK trên các hệ thống có bộ xử lý Apple Silicon và hỗ trợ biên dịch các tệp thực thi cho các chip này.
  • Lệnh "dart pub" đã thêm hỗ trợ cho tệp dịch vụ mới ".pubignore", cho phép bạn xác định danh sách các tệp sẽ bị bỏ qua khi xuất bản gói lên kho lưu trữ pub.dev. Các cài đặt này không can thiệp vào danh sách bỏ qua “.gitignore” (trong một số trường hợp, pub.dev có thể muốn tránh truyền các tệp cần thiết trong Git, chẳng hạn như các tập lệnh nội bộ được sử dụng trong quá trình phát triển).
  • Công việc đã được thực hiện để cải thiện hiệu suất của lệnh “thử nghiệm phi tiêu”, lệnh này hiện không yêu cầu biên dịch lại các bài kiểm tra sau khi thay đổi pubspec nếu số phiên bản không thay đổi.
  • Hỗ trợ biên dịch ở chế độ tương thích ECMAScript 5 đã bị ngừng (thay đổi này sẽ dẫn đến mất khả năng tương thích với trình duyệt IE11).
  • Các tiện ích riêng lẻ stagehand, Dartfmt và Dart2native đã được tuyên bố là lỗi thời, được thay thế bằng các lệnh tích hợp được gọi thông qua tiện ích Dart.
  • Cơ chế Tiện ích mở rộng gốc VM không còn được dùng nữa. Để gọi mã gốc từ mã Dart, bạn nên sử dụng Dart FFI (Giao diện chức năng nước ngoài) mới.

Đồng thời, một bản phát hành quan trọng của khung giao diện người dùng Flutter 2.5 đã được giới thiệu, được coi là một giải pháp thay thế cho React Native và cho phép, dựa trên một cơ sở mã duy nhất, phát hành các ứng dụng cho iOS, Android, Windows, macOS và Nền tảng Linux, cũng như tạo các ứng dụng để chạy trên trình duyệt. Một shell tùy chỉnh cho hệ điều hành vi nhân Fuchsia do Google phát triển được xây dựng trên cơ sở Flutter.

Phần chính của mã Flutter được triển khai bằng ngôn ngữ Dart và công cụ thời gian chạy để thực thi các ứng dụng được viết bằng C++. Khi phát triển ứng dụng, ngoài ngôn ngữ Dart gốc của Flutter, bạn có thể sử dụng giao diện Dart Foreign Function để gọi mã C/C++. Hiệu suất thực thi cao đạt được bằng cách biên dịch ứng dụng thành mã gốc cho nền tảng đích. Trong trường hợp này, chương trình không cần phải biên dịch lại sau mỗi thay đổi - Dart cung cấp chế độ tải lại nóng cho phép bạn thực hiện các thay đổi đối với ứng dụng đang chạy và đánh giá ngay kết quả.

Những thay đổi lớn trong Flutter 2.5:

  • Thực hiện tối ưu hóa hiệu suất đáng kể. Trên nền tảng iOS và macOS, quá trình biên dịch trước các shader cho API đồ họa Metal đã được triển khai. Cải thiện hiệu quả xử lý các sự kiện không đồng bộ. Đã giải quyết vấn đề về độ trễ khi trình thu gom rác lấy lại bộ nhớ từ các hình ảnh không được sử dụng (ví dụ: trong khi phát lại ảnh GIF động dài 20 giây, số lượng thao tác thu gom rác đã giảm từ 400 xuống 4. Độ trễ khi truyền tin nhắn giữa Dart và Objective- C/Swift đã giảm xuống còn 50% (iOS) hoặc Java/Kotlin (Android) Đã thêm hỗ trợ xây dựng gốc cho các hệ thống dựa trên chip Apple Silicon.
    Có sẵn ngôn ngữ Dart 2.14 và khung Flutter 2.5
  • Đối với nền tảng Android, hỗ trợ chạy ứng dụng ở chế độ toàn màn hình đã được thiết lập. Việc triển khai khái niệm thiết kế “Material You”, được trình bày dưới dạng tùy chọn Material Design thế hệ tiếp theo, vẫn tiếp tục. Đã thêm trạng thái mới MaterialState.scrolledUnder, triển khai hiển thị động các thanh cuộn khi thay đổi kích thước và đề xuất giao diện mới để hiển thị biểu ngữ thông báo.
  • Khả năng của plug-in máy ảnh đã được mở rộng đáng kể, bổ sung thêm các công cụ để kiểm soát lấy nét tự động, phơi sáng, đèn flash, thu phóng, giảm nhiễu và độ phân giải.
  • Các công cụ dành cho nhà phát triển (DevTools) đã được cải tiến để bao gồm chế độ kiểm tra tiện ích được cập nhật cũng như các công cụ để xác định độ trễ hiển thị và theo dõi quá trình biên dịch đổ bóng.
    Có sẵn ngôn ngữ Dart 2.14 và khung Flutter 2.5
  • Các plugin được cải tiến cho Visual Studio Code và IntelliJ/Android Studio.

Nguồn: opennet.ru

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