Chapel là một ngôn ngữ lập trình song song mới đang được phát triển bởi Cray Inc. như là một phần của chương trình cao Năng suất hệ thống máy tính DARPA dẫn (HPCS). Chapel được thiết kế để cải thiện năng suất của người dùng máy tính cao cấp trong khi cũng phục vụ như là một mô hình lập trình song song cầm tay có thể được sử dụng trên các cụm hàng hóa hoặc các hệ thống đa lõi máy tính để bàn. Chapel phấn đấu để bao la cải thiện khả năng lập trình của máy tính song song quy mô lớn trong khi phù hợp hoặc đánh bại hiệu suất và tính di động của mô hình lập trình hiện nay như Bộ KH & ĐT.
Các ứng dụng Chapel hỗ trợ một mô hình thực hiện đa luồng qua trừu tượng hóa cao cấp cho song song dữ liệu, việc xử lý song song, đồng thời, và song song lồng nhau & nbsp;. Loại locale Chapel cho phép người dùng để xác định và lập luận về các vị trí của dữ liệu và các nhiệm vụ trên một kiến trúc đích để để điều chỉnh cho địa phương. Chapel hỗ trợ toàn cầu tập hợp dữ liệu với việc triển khai dùng định nghĩa, cho phép hoạt động trên các cấu trúc dữ liệu phân tán được thể hiện một cách tự nhiên. Trái với nhiều ngôn ngữ song song cấp cao hơn trước, Chapel được thiết kế xung quanh một triết lý multiresolution, cho phép người sử dụng để bước đầu viết mã rất trừu tượng và sau đó từng bước thêm chi tiết hơn cho đến khi họ càng gần với máy tính như là nhu cầu của họ đòi hỏi. Chapel hỗ trợ tái sử dụng mã và tạo mẫu nhanh thông qua thiết kế hướng đối tượng, suy luận kiểu, và các tính năng cho chương trình chung.
Chapel được thiết kế từ nguyên tắc đầu tiên chứ không phải bằng cách mở rộng một ngôn ngữ hiện có. Nó là một ngôn ngữ khối cấu trúc bắt buộc, được thiết kế để dễ dàng để tìm hiểu cho người sử dụng C, C ++, Fortran, Java, Perl, Matlab, và ngôn ngữ phổ biến khác. Trong khi Chapel xây dựng dựa trên các khái niệm và cú pháp từ nhiều ngôn ngữ trước đó, tính năng song song của nó chịu ảnh hưởng trực tiếp nhất của ZPL, High-Performance Fortran (HPF), và Cray MTA & trade; / Cray XMT & thương mại; phần mở rộng cho C và Fortran
là gì mới trong phiên bản này:.
- Những điểm nổi bật (xem chi tiết bên dưới)
- split 'def' từ khóa vào 'proc (đối với thủ tục) và' iter (đối với vòng lặp)
- (xem '$ CHPL_HOME / util / chuyển đổi-defs --help' giúp đỡ cập nhật mã số hiện)
- thêm "Nhân rộng 'phân phối và cải thiện' Block-Cyclic 'phân phối
- (xem & quot; Chuẩn Distributions & quot; trong spec và các ví dụ / mồi / distributions.chpl)
- thêm nhiều lớp nhiệm vụ duy nhất-locale cho Nanos ++ (BSC) và Qthreads (Sandia)
- (xem doc / README.tasks)
- làm lại chủ yếu của ngữ nghĩa và thực hiện nhiều
- (xem & quot; Thay đổi Semantic / Thay đổi để Chapel Ngôn ngữ & quot; dưới đây để xem chi tiết)
- hỗ trợ ban đầu cho các loại dễ bay hơi: bool, int, uint, thực sự, IMAG
- (xem doc / Technotes / README.volatile)
- hỗ trợ cho consts và lớp extern (con trỏ-to-cấu trúc)
- (xem doc / Technotes / README.extern)
- Cải thiện hỗ trợ cho dữ liệu song song trên Cray XMT
- canh cải tiến để các mã số mẫu trong các ví dụ / thư mục
- (xem 'Ví dụ Codes' dưới đây và các ví dụ / README)
- tăng hầu hết các ví dụ mã từ các spec cho một ví dụ / thư mục mới
- (xem các ví dụ / spec / *)
- thêm một ghi chú kỹ thuật mô tả người dùng định nghĩa bản đồ miền giao diện
- (xem doc / Technotes / README.dsi)
- cập nhật rộng rãi đến các đặc tả ngôn ngữ
- (xem 'Tài liệu' bên dưới)
- một số cải tiến để các tác vụ runtime và các lớp truyền thông
- (xem & quot; Runtime Library Thay đổi & quot; bên dưới)
- cú pháp / Đặt tên thay đổi
- split 'def' từ khóa vào 'proc (đối với thủ tục) và' iter (đối với vòng lặp)
- (xem '$ CHPL_HOME / util / chuyển đổi-defs --help' giúp đỡ cập nhật mã số hiện)
- đổi tên thành "số học" lĩnh vực / mảng đến lĩnh vực "hình chữ nhật '/ mảng
- thêm hỗ trợ cho nổi literals điểm của hình thức '1e ...'
- (trước đó, chỉ có '1e ...' và '1.0e ...' đã được hỗ trợ)
- Thay đổi Semantic / Thay đổi để Chapel ngôn ngữ
- một số cải tiến để các khoảng (xem 'Ranges' chương trong spec ngôn ngữ):
- thêm một khái niệm về liên kết để chỉ ra một modulo kết | sải |
- thêm một nhà điều hành 'align' và truy vấn để xác định phạm vi / chỉnh truy vấn
- (ví dụ, '1..10 bởi 3 class 2' = & gt; '2, 5, 8' kể từ 2 == 5 == 8, mod 3)
- == xác định trên phạm vi trong điều khoản của chuỗi số nguyên mà họ tạo ra
- ident xác định (r1, r2) để nói liệu r1 và r2 là ngữ nghĩa giống nhau
- định nghĩa '# k' cho k & lt; 0 như ý nghĩa & quot; tính từ ngày kết thúc của dãy & quot;
- tăng 'đầu tiên', 'cuối cùng', 'alignedLow,' phương pháp alignedHigh 'đến những dãy
- (ví dụ, '1..10 -2' = & gt; đầu tiên == 10, == cuối cùng 2, alignedLow = 2, alignedHigh = 10)
- thêm hỗ trợ cho một loạt các chức năng truy vấn phạm vi mới
- (ví dụ, alignLow (), hasFirst (), hasLowBound (), isAligned (), boundsCheck () ...)
- thêm hỗ trợ cho bool dễ bay hơi, int, uint, thực sự, và các loại IMAG
- (xem doc / Technotes / README.volatile)
- thêm một kiểm tra cuối cùng của tập tin vào các loại tập tin
- (ví dụ:., 'Trong khi! Infile.eof ...')
- xoá hỗ trợ điều trị 'trở về' trong iterator như một "sản lượng"
- (ví dụ, thay đổi 'iter foo () {return x;}' để 'iter foo () {năng suất x; return;}')
- thêm hỗ trợ cho các mô-đun mà không tham khảo đầu tiên 'use'-ing chúng
- (ví dụ, module M1 {var x ...} Module M2 {... M1.x ...} Bây giờ là hợp pháp)
- thêm một truy vấn callStackSize để loại locale
- (ví dụ, 'here.callStackSize' trả về các cuộc gọi stack kích thước trên các miền địa phương hiện tại)
- gỡ bỏ các dấu chấm phẩy trước đó yêu cầu từ cuối tờ khai enum
- (ví dụ, 'màu sắc enum {màu đỏ, xanh dương, xanh lá cây}' dụng là hợp pháp, trước đây cần thiết ';')
- thêm hỗ trợ cho một dấu phẩy dấu duy nhất ở cuối danh sách enum
- (ví dụ, 'màu sắc enum {màu đỏ, xanh dương, xanh lá cây,}' dụng là hợp pháp)
- xoá hỗ trợ +/- khai thác trên các lĩnh vực hình chữ nhật; sử dụng dịch ()
- Các tính năng mới được thực hiện
- thực hiện == /! = Cho hình chữ nhật, liên kết, và các lĩnh vực thưa thớt
- Standard phân phối
- thêm một đầu tiên dự thảo "Nhân rộng 'phân phối để lưu trữ dữ liệu dư thừa
- (xem các ví dụ / mồi / distributions.chpl)
- cải thiện 'Block-Cyclic', đủ để thực hiện một cách chính xác HPCC PTRANS và HPL
- (xem các ví dụ / HPCC / ptrans.chpl, hpl.chpl; ví dụ / mồi / distributions.chpl)
- dư thừa được loại bỏ trong đặc điểm kỹ thuật của vòng lặp lãnh đạo giữa các tên miền / mảng
- Standard Modules
- tăng INFINITY và NAN hằng số cho mô-đun Math.chpl
- (xem 'Toán' dưới & quot; Chuẩn Modules & quot; trong ngôn ngữ spec)
- tăng isinf () và isfinite () thói quen kiểm tra để các module Math.chpl
- (xem 'Toán' dưới & quot; Chuẩn Modules & quot; trong ngôn ngữ spec)
- thêm một nửa tá những thói quen đến các module GMP.chpl
- Tài liệu
- thêm một ghi chú kỹ thuật mới mô tả người dùng định nghĩa bản đồ miền giao diện
- (xem doc / Technotes / README.dsi)
- thực hiện nhiều cải tiến để đặc tả ngôn ngữ
- phiên bản chính để chương Domains cải thiện rõ ràng / độ chính xác
- cải thiện và cơ cấu thống nhất của Records và Lớp học chương
- phiên bản chính để chương Maps Domain để cải thiện rõ ràng / độ chính xác
- mã số ví dụ đặt tên là để cung cấp tham chiếu chéo với các ví dụ / spec / chương trình
- làm rõ tính hợp pháp của nhãn / break / tiếp tục trong vòng song song
- cập nhật các mô tả của đọc [ln] / viết [ln]
- cố định một số vấn đề trong các lĩnh vực tập tin đặt hàng
- định dạng lại các đặc điểm kỹ thuật như là một 'cuốn sách' trong LaTeX
- sửa chữa nhỏ khác nhau của lỗi chính tả / sai lầm
- định nghĩa cải thiện / miêu tả về các điều khoản
- thêm tài liệu hướng dẫn của locale.name
- và nhiều thay đổi khác ...
- cập nhật tài liệu tham khảo nhanh chóng bao gồm def- & gt; proc / thay đổi iter, align op .
- viết lại / tổ chức lại README.extern để làm rõ giải thích và đưa lên-to-date
- thêm một README miêu tả "địa phương" tuyên bố (doc / Technotes / README.local)
- thêm một README mô tả những loại dễ bay hơi (doc / Technotes / README.volatile)
- cập nhật README.comm-chẩn đoán để đề cập đến ngã ba thống kê nhanh
- cập nhật các tập tin README khác nhau
- Ví dụ Codes
- đặt hầu hết các ví dụ mã từ spec ngôn ngữ. để một spec mới / thư mục con
- cải thiện mồi / thư mục:
- thêm một lớp sơn lót mới sử dụng các thủ tục (mồi / procedures.chpl)
- thêm một lớp sơn lót cơ bản cho các tên miền (mồi / domains.chpl)
- đổi tên các miền địa primer để locales.chpl và cải thiện nó
- cải thiện lớp sơn lót phân phối và sử dụng thêm Block-Cyclic và Nhân rộng
- cập nhật mồi loạt (mồi / range.chpl)
- cải thiện mồi biến lặp (mồi / iterators.chpl)
- cải thiện lớp sơn lót giảm (mồi / reductions.chpl)
- tăng getCurrentTime () của lớp sơn lót timers (mồi / timers.chpl)
- thêm mô tả về loại bí danh và các loại cấu hình để biến mồi
- (xem mồi / variables.chpl)
- cải thiện HPCC / tiêu chuẩn thư mục
- thêm phiên bản đầu tiên của HPCC PTRANS để HPCC / thư mục (ptrans.chpl)
- thêm phiên bản sạch của HPCC HPL để HPCC / thư mục (hpl.chpl)
- thêm một biến thể / thư mục con để ví dụ / HPCC để triển lãm các cách tiếp cận khác
- thêm dòng-promoted.chpl để hiển thị sử dụng các chương trình khuyến mãi trong toàn cầu STREAM Triad
- thêm ra-cleanloop.chpl để hiển thị sạch hơn (nhưng hiện chậm hơn) RA kernel
- ví dụ top-level cải thiện:
- đổi tên thành hiện & quot; hello, thế giới & quot; ví dụ để đề nghị một trật tự đọc logic
- (xem các ví dụ / hello * .chpl)
- thêm dữ liệu dữ liệu song song và phân phối song song hello, ví dụ thế giới
- (xem các ví dụ / hello3-datapar.chpl, ví dụ / hello4-datapar-dist.chpl)
- thêm nhận xét vào các hình hello, ví dụ thế giới (ví dụ / hello * .chpl)
- cập nhật tất cả các ví dụ ngữ nghĩa của ngôn ngữ hiện tại
- sử dụng 'proc' / 'iter' chứ không phải 'def'
- cập nhật để phản ánh ngữ nghĩa phạm vi mới
- Ghi chú Platform-cụ thể
- cho Cray XT / Cray XE, cải thiện các aprun và PBS-aprun phóng
- (xem & quot; chú & quot Launcher cụ thể; bên dưới)
- cho Cray XMT, thêm hỗ trợ cho các vòng lặp song song trên phạm vi
- cho Cray XMT, thêm vào thế hệ của noalias pragmas để forall biến lặp
- thêm hỗ trợ cho MareNostrum BSC bao gồm tài liệu và phóng đặc biệt
- (xem doc / nền tảng / README.marenostrum)
- Launcher cụ thể ghi chú
- thêm tùy chọn launcher cụ thể để --help khả năng
- cải thiện công tác tuyên truyền của các mã trạng thái cảnh qua phóng
- thay đổi bệ phóng để hỗ trợ exec-based (chứ không phải dựa trên hệ thống) lệnh
- làm bệ phóng sử dụng 'unlink' chứ không phải là hệ thống ('rm') để loại bỏ các tập tin tạm thời
- thêm một bệ phóng cho MareNostrum BSC
- giảm số lượng các tập tin tạm thời được sử dụng để nắm bắt đầu ra của 'hệ thống' lệnh
- cải thiện launcher aprun:
- thêm một lá cờ --cc để xác định phân CPU w / trong một nút
- thêm một lá cờ -q để chạy launcher trong chế độ yên tĩnh
- tăng khả năng debug qua CHPL_LAUNCHER_DEBUG để giữ các file tmp quanh
- cải thiện launcher PBS-aprun:
- thêm một lá cờ --cc để xác định phân CPU w / trong một nút
- tăng khả năng debug qua CHPL_LAUNCHER_DEBUG để giữ các file tmp quanh
- làm sạch đầu ra để thoát khỏi một số in ấn tạp
- thực hiện hỗ trợ phóng của chúng tôi hệ thống thử nghiệm
- tăng --walltime và cờ --queue để Launcher thay thế cho ENV. vars.
- Compiler thay đổi
- đã in biên dịch 'true' / 'false' ra trong loại chữ ký hơn 1/0
- thêm cấu hình param 'noRefCount' để vô hiệu hóa tính tham khảo (có thể bị rò rỉ bộ nhớ)
- Flags Compiler
- thêm một lá cờ --print-callstack-on-lỗi để hiển thị những gì đã dẫn đến một cuộc gọi xấu
- thêm một lá cờ --no-codegen để bỏ qua các mã thế hệ và liên kết các giai đoạn
- Khả năng tương tác thay đổi
- thêm hỗ trợ cho extern C & quot; lớp & quot; (Con trỏ-to-struct loại)
- thêm hỗ trợ cho consts extern (xem README.extern)
- Cải tiến Thông báo lỗi
- thêm một cảnh báo mồ côi 'sử dụng' báo cáo bên ngoài của các mô-đun tuyên bố
- (ví dụ, "sử dụng M1; M2 mô-đun {} 'thường nên' module M2 {sử dụng M1;} ')
- thực hiện thông báo lỗi phân tích cú pháp, thời gian sử dụng các tiêu chuẩn 'filename: lineno:' định dạng
- tạo ra một thông báo lỗi cho đề cập đến một tên lớp trong một phương pháp chính
- (ví dụ, 'class C {def Cm () {...}}' bây giờ tạo ra một thông báo lỗi)
- Sửa chữa lỗi / New Checks Semantic (đối với ngữ nghĩa cũ)
- ngăn chặn các loại cấu hình từ được thiết lập bằng cách sử dụng lá cờ dòng lệnh thời gian thực hiện
- cố định khả năng của trình biên dịch để xử lý các công đoàn không có lĩnh vực
- cố định giảm minloc / maxloc để xử lý các dãy trống / subranges các giá trị
- cố định một lỗi trong đó các 'con đường' đối số nhà xây dựng tập tin đã bị bỏ qua
- thực hiện các công đoàn rỗng làm việc một cách chính xác
- cố định một vấn đề tràn trong chunking lên dãy phân phối / song song
- cố định một lỗi liên quan đến hỗ trợ cho sản phẩm nào các loại hồ sơ extern
- cố định một lỗi liên quan đến chức năng extern mà trả lại hồ sơ
- cố định một lỗi liên quan đến sao chép hồ sơ bên ngoài
- thực hiện cố định của +/- khai thác trên kết / lĩnh vực thưa thớt
- cố định một lỗi liên quan đến tên module tên tập tin dựa trên chứa nhiều 'của.
- Tin nhắn thêm lỗi cho mở rộng / ngoại thất / nội thất trên lĩnh vực bất thường
- thêm một lỗi cho nhà thầu / hủy với sự trở lại loại quy định
- cố định hai lỗ hổng liên quan đến 'nhanh trên' tối ưu hóa
- thêm một kiểm tra chống lại xây dựng các lớp học mà không xác định các lĩnh vực chung
- Thay đổi bao bì
- thêm cú pháp mã highlighter cho GNU nguồn highlight
- (xem etc / nguồn-highlight / README)
- emacs cải thiện màu hỗ trợ cho phiên bản 22.x
- (xem etc / emacs / README)
- cập nhật để vim màu cú pháp để phản ánh mới 'proc' / từ khóa 'iter'
- (xem etc / vim / README)
- thêm một kịch bản để chuyển đổi 'sử dụng' mã số hiện def 'to' iter '/' proc '
- (xem $ CHPL_HOME / util / chuyển đổi-defs)
- xóa ví dụ multirealm & tài liệu cho thời gian được
- Phần mềm của bên thứ ba thay đổi
- cập nhật lên phiên bản 1.16.1 GASNet
- thêm bản sao của BSC Nanos ++ và Qthreads Sandia của
- (xem bên thứ ba / README)
- thực hiện một cài đặt bài bước cho GASNet rằng những thay đổi đường dẫn tuyệt đối đến tương đối
- PVM loại bỏ trong thời gian tới do sự bất ổn
- Runtime Library thay đổi
- thêm nhiều lớp nhiệm vụ duy nhất-locale cho Nanos ++ (BSC) và Qthreads (Sandia)
- một số cải tiến để các lớp thời gian chạy nhiệm:
- thêm một giao diện mới cho có chpl_main lớp tasking call ()
- thay đổi tác vụ chức năng init để maxThreadsPerLocale / callStackSize args
- tăng khả năng năng suất công việc với giao diện lớp tasking
- cải thiện mã thời gian chạy để tránh sử dụng đồng bộ vars trước khi khởi tạo tác vụ
- xóa hình thức macro-ized của giao diện nhiệm; sử dụng tên tiêu chuẩn thay vì
- đặt tên thống nhất của tất cả các lớp nhiệm vụ thói quen để chpl_sync _ * () và chpl_task _ * ()
- yêu cầu loại bỏ để thực hiện các giao diện biến duy nhất
- chấm dứt chuyển các chủ đề từ lớp tasking FIFO để pthreads luồng
- thực hiện đơn giản hóa của các biến đồng bộ trong lớp pthread luồng
- chuyển trách nhiệm cho tội sợi từ tasking FIFO để pthread luồng
- một số cải tiến để các lớp giao tiếp thời gian chạy:
- cơ cấu lại các giao diện truyền thông để hỗ trợ đối số chiều dài / loại
- thêm một giao diện để không bị chặn được hoạt động cho các comm. giao diện
- thống nhất tất cả các hoạt động từ xa có được sử dụng CHPL_COMM_GET () vĩ mô
- refactored / đổi tên tiêu đề giao diện truyền thông
- Hệ thống kiểm tra
- bao la cải thiện các thử nghiệm hiệu suất và tính năng đồ họa
- (xem ý kiến ở phía trước của start_test cho tài liệu)
- hỗ trợ cải thiện hệ thống kiểm nghiệm cho việc làm sạch sau khi chính nó
- khả năng thêm vào để tránh sử dụng bất kỳ sự gian trá của stdin
- thêm một lựa chọn để cung cấp một tùy chọn prediff toàn hệ thống
- tăng khả năng sử dụng tính năng thời gian chờ bản địa của một phóng hơn là Python của
- cải thiện cách hệ thống thử nghiệm giết chết một thử nghiệm mà lần ra
- cố định một lỗi trong các tập tin .preexec chỉ làm việc nếu '.' là trong đường dẫn của bạn
- Nội
- thêm một trình biên dịch cờ --break-on-id cho các nhà phát triển để xác định vị trí nút AST tạo
- cải thiện tổ chức các nội dung util / thư mục
- thay đổi cách thức con số phiên bản được tính toán / hiển thị cho người dùng SVN dựa trên
- thêm hỗ trợ cho task- / thread-cụ thể mô-đun mã
- thêm một khả năng in đếm AST phân bổ giữa mỗi đường chuyền
- thêm một gdb bí danh mới để biên dịch --gdb: 'loc' in một nút AST của vị trí
- cải thiện đáng kể thực hiện pragmas / cờ để tránh các trường hợp lỗi
- xóa một số trường hợp so sánh chuỗi không cần thiết trong trình biên dịch
- xóa sử dụng dễ bị lỗi của CHPL_TASKS và CHPL_THREADS như là biểu tượng Preprocessor
- tăng bestPractices tài liệu cho các nhà phát triển (không bao gồm trong bản phát hành)
- thay đổi munging nội bộ của '=' và '==' to 'ASSIGN' và 'bằng' tương ứng
- thêm một --print-id-on-error cờ phát triển để in AST ID trên lỗi
- cải thiện sự nghiêm minh của C ++ nguyên mẫu kiểm tra
- thêm các thỏa thuận đóng góp bên ngoài để cây SVN (không phát hành)
- thêm một khái niệm về các loại nội bộ được sử dụng bởi các trình biên dịch nhưng không phải là người dùng
Bình luận không