ngôn ngữ lập trình logic đã được khoảng hơn hai mươi năm. Mặc dù có những ưu điểm dự kiến của một ngôn ngữ lập trình cấp cao dựa trên lý thuyết cũng phát triển của logic trong ngôn ngữ lập trình thông thường (chẳng hạn như C, C ++, Pascal và Ada) họ đã không có tác động đáng kể đến các ngành công nghiệp máy tính.
Thủy ngân là một logic / ngôn ngữ lập trình chức năng mới, trong đó kết hợp sự rõ ràng và biểu cảm của lập trình khai báo với phân tích và phát hiện lỗi tính năng tiên tiến tĩnh.
Thủy ngân được tối ưu hóa cao thuật toán thực hiện mang lại hiệu quả vượt xa các hệ thống lập trình logic hiện tại, và gần với các hệ thống lập trình thông thường.
Thủy giải quyết các vấn đề về phát triển chương trình quy mô lớn, cho phép mô đun, biên dịch riêng biệt, và rất nhiều tối ưu hóa / thời gian thương mại-offs
là gì mới trong phiên bản này:.
- Sửa lỗi này sửa lỗi phát hành xây dựng các vấn đề trên Solaris và NetBSD và thêm hỗ trợ cho việc lựa chọn các trình biên dịch C # lúc cấu hình.
- Nhiều lỗi nhỏ khác đã được cố định.
- Ngoài ra còn có một số bổ sung nhỏ để các thư viện chuẩn.
là gì mới trong phiên bản 13.05:
- Tạo ra các file thực thi 64-bit trên Windows hiện đang hỗ trợ.
- lần Compilation cho chương trình rất lớn đã được cải thiện.
- Một số tối ưu hóa biểu diễn kiểu mới đã được thêm vào.
- Các gỡ lỗi hiện nay có hỗ trợ tốt hơn cho việc xử lý các cuộc gọi đôi bên cùng có bè phái đệ quy trên stack.
- A liên kết với các thư viện GLFW đã được thêm vào các tính năng bổ sung phân phối.
- hội được tạo ra với C # backend giờ đây có thể được ký kết với một tên mạnh.
là gì mới trong phiên bản 11.01:
- Chúng tôi đã bổ sung thêm hai loại mới của phạm vi ngôn ngữ.
- Một phạm vi giới thiệu bằng một trong những từ khoá mới require_det, require_semidet, require_multi, require_nondet, require_cc_multi, require_cc_nondet, require_erroneous và require_failure, như tên của nó, đòi hỏi các mục tiêu bên trong phạm vi để có định mệnh nào.
- Một phạm vi giới thiệu bằng các từ khóa require_complete_switch đòi hỏi các mục tiêu bên trong phạm vi, nếu nó là một chuyển đổi trên các biến có tên bởi phạm vi, là một chuyển đổi đầy đủ, tức là có vũ khí cho tất cả các biểu tượng chức năng trong các loại của chuyển-on biến.
- Chúng tôi đã bổ sung thêm chế độ semidet cho hash_table.fold / 4 và version_hash_table.fold / 4.
- Chúng tôi đã thêm vào các vị từ và chức năng mới cho các mô-đun assoc_list. Các vị map_keys_only / 3 map_values_only / 3 và map_values / 3 bổ sung các chức năng của cùng tên. Các vị từ lọc / 3, negated_filter / 3, lọc / 4, sáp nhập / 3, trong đó cũng có các phiên bản chức năng, làm việc rất giống với các vị có cùng tên trong danh sách các mô-đun, nhưng làm các hoạt động có liên quan trên các phím thay vì toàn bộ yếu tố danh sách.
- Chúng tôi đã chuyển mô-đun đánh giá lười biếng ra khỏi sự phân bố và tính năng bổ sung vào một mô-đun tiêu chuẩn thư viện mới được gọi là 'lười'. Nó cũng đã được làm backend-agnostic.
- Chúng tôi đã thực hiện những thay đổi trong mô-đun danh sách các thư viện chuẩn:
- Chúng tôi bổ sung thêm một vị list.member_index0 mới / 3. Nó giống như list.member / 2 ngoại trừ việc nó cũng có một tham số đại diện các chỉ số không dựa trên các yếu tố trong danh sách.
- Chúng tôi bổ sung thêm một vị list.map3_foldl mới / 7 mà các bản đồ trên một danh sách sản xuất ba danh sách và một giá trị gấp.
- Chúng tôi bổ sung chế độ semidet với ắc độc đáo cho list.foldl3 / 8, list.foldl4 / 10, list.foldl5 / 12, và list.foldl6 / 14.
- Chúng tôi đã thêm vào các vị chia / 4 và divide_by_set / 4 để các module tree_bitset của thư viện chuẩn.
- Chúng tôi đã thêm vào các vị set_ctree234.member / 2 và set_ctree234.non_empty / 1. Chúng tôi có thêm các chức năng set_ctree234.from_list / 1.
- Chúng tôi đã thêm vị set_bbbtree.count / 2 và các chức năng set_bbbtree.count / 1. Những thay thế vị set_bbbtree.size / 2 mà bây giờ bị phản đối.
- Chúng tôi đã thêm vị set_ordlist.non_empty / 1.
- Chúng tôi đã thêm vị set_tree234.non_empty / 1 và các chức năng set_tree234.from_list / 1.
- Chúng tôi đã thêm set_unordlist.non_empty vị / 1 và set_unordlist.count / 2, và các chức năng set_unordlist.count / 1.
- Tất cả các mô-đun trong thư viện chuẩn mà thực hiện các ADT bộ, (tập, set_ordlist, set_unordlist, set_bbbtree, set_tree234, và set_ctree234), bây giờ hỗ trợ gấp trên bộ với lên đến sáu ắc. Phương thức cung cấp ắc duy nhất và hầu hết là duy nhất cho bộ lần cũng đã được thêm vào.
- Chúng tôi đã thực hiện các thay đổi sau cho các mô-đun mảng của các thư viện chuẩn:
- Chúng tôi đã thêm chức năng unsafe_elem / 2 và bổ sung / 2.
- Chúng tôi đã thêm vào các vị svset / 4, unsafe_svset / 4, foldl2 / 4, foldl2 / 6, foldr / 4, foldr2 / 6, map_foldl / 5, map_corresponding_foldl / 6, và là thành viên / 2.
- Chúng tôi đã thêm vào các vị version_array.foldl2 / 6, version_array.foldr / 4, và version_array.foldr2 / 6 đến thư viện chuẩn.
- Chúng tôi đã bổ sung thêm chế độ semidet với ắc duy nhất và hầu hết là duy nhất cho các vị sau đây:
- bimap.foldl2 / 6
- bimap.foldl3 / 8
- cord.foldl_pred / 4
- cord.map_foldl / 5
- list.map_corresponding_foldl2 / 8
- list.map_corresponding_foldl3 / 10
- list.map_corresponding3_foldl / 7
- map.foldl3 / 8
- Chúng tôi đã thêm vị unsorted_aggregate2 / 6 với giải pháp mô-đun của thư viện chuẩn.
- Chúng tôi đã bổ sung thêm một số vị và chức năng để các module yêu cầu của các tiêu chuẩn thư viện. Các vị xin lỗi / 2 và xin lỗi báo cáo / 3 sự vắng mặt của một tính năng, trong khi các vị bất ngờ / 2 và bất ngờ / 3 báo cáo một lỗi nội bộ trong chương trình; tất cả các phiên bản có chức năng quá. Các vị mong đợi / 3 cuộc gọi bất ngờ nếu một điều kiện là không hài lòng. Bây giờ chúng ta có thể mong đợi / 4 cũng như mong đợi / 3. Đối với mong đợi / 4 cũng như mong đợi / 3, các đối số đầu tiên và cuối cùng là những điều kiện dự kiến và các thông báo lỗi tương ứng, nhưng với mong đợi / 4, có hai đối số ở giữa để xác định vị trí của lỗi (thường là tên của các mô-đun và các vị tương ứng). Chúng tôi cũng bổ sung expect_not / 3 và expect_not / 4, mà cũng giống như mong đợi / 3 và mong đợi / 4 tương ứng, ngoại trừ họ mong đợi điều kiện để được * * sai, không đúng sự thật .
là gì mới trong phiên bản 10.04.2:
- Phiên bản này là một phiên bản lỗi sửa chữa. Một số vấn đề mà gây ra các trình biên dịch để hủy bỏ đã được cố định, một số hoạt động RTTI bị hỏng trong các lớp java đã được cố định, và chúng tôi đã bổ sung thêm một cách giải quyết cho một vấn đề với GCC phiên bản 4.4.
Hạn chế :
- Việc thực hiện vẫn chưa hoàn toàn thực hiện các ngôn ngữ Mercury. Những hạn chế chính của việc thực hiện như sau:
- Chúng tôi không cho phép aliasing hạn trong hệ thống chế độ. Nếu không có điều này, phương thức khởi tạo một phần là không sử dụng được, và do đó được lồng vào chế độ độc đáo.
- Trình biên dịch chưa sử dụng cấu trúc tái sử dụng hoặc thời gian biên dịch thu gom rác thải để khai thác chế độ độc đáo.
- Loại và phương thức suy luận là một chút không hoàn hảo.
- Ngoài ra, quyết định thiết kế trong implemenation này đã áp đặt các giới hạn sau:
- vị từ và các chức năng có thể có ít nhất khoảng 1000 đối số.
- bậc cao có thể có ít nhất khoảng 500 đối số.
Về
Bình luận không