Sway ಬಳಕೆದಾರ ಪರಿಸರ, Aerc ಇಮೇಲ್ ಕ್ಲೈಂಟ್ ಮತ್ತು SourceHut ಸಹಯೋಗಿ ಅಭಿವೃದ್ಧಿ ವೇದಿಕೆಯ ಲೇಖಕರಾದ ಡ್ರೂ ಡೆವಾಲ್ಟ್, Hare ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯನ್ನು ಪ್ರಸ್ತುತಪಡಿಸಿದರು, ಇದನ್ನು ಅವರು ಮತ್ತು ಅವರ ತಂಡವು ಕಳೆದ ಎರಡೂವರೆ ವರ್ಷಗಳಿಂದ ಕೆಲಸ ಮಾಡುತ್ತಿದೆ. Hare ಅನ್ನು C ಭಾಷೆಗೆ ಹತ್ತಿರವಿರುವ ಆದರೆ C ಗಿಂತ ಸರಳವಾದ ಸಿಸ್ಟಮ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯಾಗಿ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ. Hare ನ ಪ್ರಮುಖ ವಿನ್ಯಾಸ ತತ್ವಗಳು ಸರಳೀಕರಣದ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುವುದು ಮತ್ತು ಪ್ರೋಗ್ರಾಮರ್ನ ಕ್ರಿಯೆಗಳಲ್ಲಿ ಸಂಪೂರ್ಣ ನಂಬಿಕೆಯನ್ನು (ಸ್ವಯಂ-ಚಟುವಟಿಕೆ ಮತ್ತು ಸೂಚ್ಯ ನಡವಳಿಕೆಯಿಲ್ಲದೆ ನಿಖರವಾಗಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದದನ್ನು ಮಾಡುವುದು) ಒಳಗೊಂಡಿವೆ, ವಿಶಿಷ್ಟ ದೋಷಗಳು ಮತ್ತು ಸಮಸ್ಯೆಗಳನ್ನು ಗುರುತಿಸಲು ಸಹಾಯಕ ಪರಿಕರಗಳ ಉಪಸ್ಥಿತಿಯೊಂದಿಗೆ.
ಕಂಪೈಲರ್ ಮತ್ತು ಟೂಲ್ಚೈನ್ ಮೂಲ ಕೋಡ್ GPLv3 ಅಡಿಯಲ್ಲಿ ಪರವಾನಗಿ ಪಡೆದಿದೆ ಮತ್ತು ಪ್ರಮಾಣಿತ ಗ್ರಂಥಾಲಯ ಕೋಡ್ MPL (ಮೊಜಿಲ್ಲಾ ಸಾರ್ವಜನಿಕ ಪರವಾನಗಿ) ಅಡಿಯಲ್ಲಿ ಪರವಾನಗಿ ಪಡೆದಿದೆ. ಮೊದಲ ಸಾರ್ವಜನಿಕ ಬಿಡುಗಡೆಯು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಘೋಷಿಸಿತು. Linux ಮತ್ತು x86_64, aarch64, ಮತ್ತು riscv64 ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗಳಲ್ಲಿ FreeBSD, ಹಾಗೆಯೇ ಬೇರ್-ಮೆಟಲ್ ಕಾರ್ಯಾಚರಣೆಗಾಗಿ ಸ್ವತಂತ್ರ ಅನುಷ್ಠಾನ. ಯೋಜನೆಗಳಲ್ಲಿ NetBSD, OpenBSD, Illumos, Haiku, ಮತ್ತು Plan 9 ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಗಳು ಮತ್ತು ppc64le, i686, ಮತ್ತು arm32 ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗಳಿಗೆ ಬೆಂಬಲ ಸೇರಿವೆ.
ಈ ಭಾಷೆಯು ಹಸ್ತಚಾಲಿತ ಮೆಮೊರಿ ನಿರ್ವಹಣೆ ಮತ್ತು ಸ್ಥಿರ ಪ್ರಕಾರದ ವ್ಯವಸ್ಥೆಯನ್ನು ಬಳಸುತ್ತದೆ, ಅಲ್ಲಿ ಪ್ರತಿಯೊಂದು ವೇರಿಯೇಬಲ್ಗೆ ನಿರ್ದಿಷ್ಟ ಪ್ರಕಾರವನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ನಿಗದಿಪಡಿಸಬೇಕು. ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಕನಿಷ್ಠ ರನ್ಟೈಮ್ ಅನ್ನು ಲಗತ್ತಿಸಲಾಗಿದೆ. ಗರಿಷ್ಠ ಕಾರ್ಯಕ್ಷಮತೆ ಮತ್ತು ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯ ಮೇಲೆ ಸಂಪೂರ್ಣ ನಿಯಂತ್ರಣದ ಅಗತ್ಯವಿರುವ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಗಳು, ಕಂಪೈಲರ್ಗಳು, ನೆಟ್ವರ್ಕ್ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಮತ್ತು ಸಿಸ್ಟಮ್ ಉಪಯುಕ್ತತೆಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವಂತಹ ಕಡಿಮೆ-ಮಟ್ಟದ ಕಾರ್ಯಗಳಿಗೆ ಭಾಷೆಯನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿಸಲಾಗಿದೆ.
ಡೆವಲಪರ್ಗಳಿಗಾಗಿ ಕಾರ್ಯಗಳ ಪ್ರಮಾಣಿತ ಗ್ರಂಥಾಲಯವನ್ನು ಸಿದ್ಧಪಡಿಸಲಾಗಿದೆ, ಇದು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಂನ ಮೂಲ ಇಂಟರ್ಫೇಸ್ಗಳು, ವಿಶಿಷ್ಟ ಅಲ್ಗಾರಿದಮ್ಗಳು ಮತ್ತು ಪ್ರೋಟೋಕಾಲ್ಗಳು ಮತ್ತು ಸ್ವರೂಪಗಳ ಅನುಷ್ಠಾನಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಒದಗಿಸುತ್ತದೆ. ಗ್ರಂಥಾಲಯವು ಇನ್ಪುಟ್/ಔಟ್ಪುಟ್, ಫೈಲ್ ನಿರ್ವಹಣೆ, ನಿಯಮಿತ ಅಭಿವ್ಯಕ್ತಿಗಳು, ಎನ್ಕ್ರಿಪ್ಶನ್, ನೆಟ್ವರ್ಕ್ ಸಂವಹನ, ಸಮಯ ಮತ್ತು ದಿನಾಂಕ ಕಾರ್ಯಾಚರಣೆಗಳು, ವಿಶಿಷ್ಟ ಯುನಿಕ್ಸ್ ಪ್ರೈಮಿಟಿವ್ಗಳಿಗೆ ಪ್ರವೇಶ (ಉದಾಹರಣೆಗೆ, ಪೋಲ್, ಎಫ್ಎನ್ಮ್ಯಾಚ್ ಮತ್ತು ಗ್ಲೋಬ್), ಪಾರ್ಸಿಂಗ್ ಮತ್ತು ಟೈಪ್ ಚೆಕ್ಕಿಂಗ್ನಂತಹ ಕ್ಷೇತ್ರಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಓಪನ್ಜಿಎಲ್, ಎಸ್ಡಿಎಲ್ 2 ಮತ್ತು ಲಿಬುಯಿ ಸಾಮರ್ಥ್ಯಗಳಿಗೆ ಪ್ರವೇಶಕ್ಕಾಗಿ ಬೈಂಡಿಂಗ್ಗಳನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಒದಗಿಸಲಾಗಿದೆ.
ಹರೇ ಭಾಷೆಯಲ್ಲಿ ಬರೆಯಲಾದ ಯೋಜನೆಗಳ ಉದಾಹರಣೆಗಳಲ್ಲಿ ಹೆಲಿಯೊಸ್ ಮೈಕ್ರೋಕರ್ನಲ್, ಹಿಮಿಟ್ಸು ಪಾಸ್ವರ್ಡ್ ಮ್ಯಾನೇಜರ್, ರೇಟ್ರೇಸಿಂಗ್ ಸಿಸ್ಟಮ್, ಬಾಕ್ಸ್ ಎನ್ಕ್ರಿಪ್ಶನ್ ಪ್ರೋಗ್ರಾಂ, ಬಿಟಿಕ್ಯೂಡಿ ಬಿಟ್ಟೊರೆಂಟ್ ಡೀಮನ್, ನಿಗದಿತ (ಕ್ರಾನ್ ತರಹದ ವ್ಯವಸ್ಥೆ), ಟೂತ್ ಬ್ರಷ್ (ಕ್ಲೈಂಟ್ ಮತ್ತು ಸರ್ವರ್ (ಫಿಂಗರ್ ಪ್ರೋಟೋಕಾಲ್ಗಾಗಿ). ಭವಿಷ್ಯದ ಯೋಜನೆಗಳಲ್ಲಿ ಭಾಷಾ ವಿವರಣೆ ಮತ್ತು ಪ್ರಮಾಣಿತ ಗ್ರಂಥಾಲಯವನ್ನು ಸ್ಥಿರಗೊಳಿಸುವುದು, ಕಾಣೆಯಾದ ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗಳು ಮತ್ತು ವಾಸ್ತುಶಿಲ್ಪಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದು ಮತ್ತು TLS 1.2 ಮತ್ತು 1.3 ಅನ್ನು ಬೆಂಬಲಿಸಲು ಗ್ರಂಥಾಲಯ ಕಾರ್ಯಗಳನ್ನು ಸೇರಿಸುವುದು ಸೇರಿವೆ.
ಹರೇನಲ್ಲಿ ಉದಾಹರಣೆ ಕೋಡ್: use crypto::sha256; use encoding::hex; use fmt; use hash; useio; use os; export fn main() void = { const hash = sha256::sha256(); const file = os::open("main.ha")!; defer io::close(file); io::copy(&hash, file)!; let sum: [sha256::SIZE]u8 = [0...]; hash::sum(&hash, sum); hex::encode(os::stdout, sum)!; fmt::println()!; const ಶುಭಾಶಯಗಳು = [ “ಹಲೋ, ವರ್ಲ್ಡ್!”, “¡ಹೋಲಾ ಮುಂಡೋ!”, “Γειά σου Κόσμε!”, “ಹಲೋ, ವರ್ಲ್ಡ್!”, “こんにちは世界!”, ]; (let i = 0z; i < len(ಶುಭಾಶಯಗಳು); i += 1) { fmt::println(ಶುಭಾಶಯಗಳು[i])!; }; let x: *int = alloc(42); fmt::printfln(" x: {}", x)!; fmt::printfln("*x: {}", *x)!; free(x); const ಫೈಲ್ = os::open(os::args[1])!; defer io::close(file)!; let buffer: *[65535]u8 = alloc([0...]); defer free(buffer); const n = io::read(file, buffer)! as size; io::write(os::stdout, buffer[..n])!; }; fn sort(items: []int) void = { ... }; @test fn sort() void = { let items = [5, 4, 3, 2, 1]; sort(items); for (let i = 1z; i < len(items); i += 1) { assert(items[i - 1] <= items[i], “list is unsorted”); }; };
ಮೂಲ: opennet.ru
