Drew DeWalt เป„เบ”เป‰เบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบฅเบฐเบšเบปเบš Hare

Drew DeVault, เบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบœเบนเป‰เปƒเบŠเป‰ Sway, เบฅเบนเบเบ„เป‰เบฒเบญเบตเป€เบกเบฅเปŒเบ‚เบญเบ‡ Aerc, เปเบฅเบฐเป€เบงเบ—เบตเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบฎเปˆเบงเบกเบกเบท SourceHut, เป„เบ”เป‰เป€เบ›เบตเบ”เป€เบœเบตเบเบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก Hare เบ—เบตเปˆเบฅเบฒเบงเปเบฅเบฐเบ—เบตเบกเบ‡เบฒเบ™เบ‚เบญเบ‡เบฅเบฒเบงเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบชเบญเบ‡เบ›เบตเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. Hare เปเบกเปˆเบ™ touted เป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบฅเบฐเบšเบปเบšเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš C เปเบ•เปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบเบงเปˆเบฒ C. เบ‚เบญเบ‡เบซเบผเบฑเบเบเบฒเบ™เบเบฒเบ™เบญเบญเบเปเบšเบšเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡ Hare, เบเบฒเบ™เบชเบธเบกเปƒเบชเปˆเบ„เบงเบฒเบกเบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเบ„เบงเบฒเบกเป„เบงเป‰เบงเบฒเบ‡เปƒเบˆเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เปƒเบ™เบเบฒเบ™เบเบฐเบ—เปเบฒเบ‚เบญเบ‡เบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก (เป€เบฎเบฑเบ”เบขเปˆเบฒเบ‡เปเบ™เปˆเบ™เบญเบ™, เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบฅเบดเป€เบฅเบตเปˆเบกเปเบฅเบฐเบžเบถเบ”เบ•เบดเบเปเบฒ implicit), เบกเบตเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบŠเปˆเบงเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปเบฅเบฐเบšเบฑเบ™เบซเบฒเบ—เบปเปˆเบงเป„เบ›, เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบเบฒเบ”.

เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เบ‚เบญเบ‡เบ„เบญเบกเป„เบžเป€เบฅเบต เปเบฅเบฐ เบฅเบฐเบซเบฑเบ”เป€เบ„เบทเปˆเบญเบ‡เบกเบทเปเบกเปˆเบ™เป„เบ”เป‰เบฎเบฑเบšเบญเบฐเบ™เบธเบเบฒเบ”เบžเบฒเบเปƒเบ•เป‰ GPLv3, เปเบฅเบฐ เบฅเบฐเบซเบฑเบ”เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปเบกเปˆเบ™เป„เบ”เป‰เบฎเบฑเบšเบญเบฐเบ™เบธเบเบฒเบ”เบžเบฒเบเปƒเบ•เป‰ MPL (เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ”เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ Mozilla). เบเบฒเบ™เบ›เปˆเบญเบเบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบ„เบฑเป‰เบ‡เบ—เบณเบญเบดเบ”เป„เบ”เป‰เบ›เบฐเบเบฒเบ”เบเบฒเบ™เบชเบฐเปœเบฑเบšเบชเบฐเปœเบนเบ™เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ Linux เปเบฅเบฐ FreeBSD เปƒเบ™เปเบžเบฅเบ”เบŸเบญเบก x86_64, aarch64, เปเบฅเบฐ riscv64, เบžเป‰เบญเบกเบ—เบฑเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบšเบš standalone เบชเบณเบฅเบฑเบšเบเบฒเบ™เบ”เบณเป€เบ™เบตเบ™เบ‡เบฒเบ™ bare-metal. เปเบœเบ™เบเบฒเบ™เบ›เบฐเบเบญเบšเบกเบตเบเบฒเบ™เบชเบฐเปœเบฑเบšเบชเบฐเปœเบนเบ™เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ NetBSD, OpenBSD, Illumos, Haiku, เปเบฅเบฐ Plan 9 เปเบฅเบฐเปเบžเบฅเบ”เบŸเบญเบก ppc64le, i686, เปเบฅเบฐ arm32.

เบžเบฒเบชเบฒเปƒเบŠเป‰เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเบ”เป‰เบงเบเบกเบท เปเบฅเบฐเบฅเบฐเบšเบปเบšเบ›เบฐเป€เบžเบ”เบชเบฐเบ–เบดเบ”, เป€เบŠเบดเปˆเบ‡เปเบ•เปˆเบฅเบฐเบ•เบปเบงเปเบ›เบˆเบฐเบ•เป‰เบญเบ‡เบ–เบทเบเบกเบญเบšเปเบฒเบเบ›เบฐเป€เบžเบ”เบชเบฐเป€เบžเบฒเบฐเบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡. A runtime เบ•เปเบฒเปˆเบชเบธเบ”เปเบกเปˆเบ™เบ•เบดเบ”เบเบฑเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. เบžเบฒเบชเบฒเป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เปƒเบซเป‰เป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒเป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™, เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™, เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เปเบฅเบฐเบญเบธเบ›เบฐเบเบญเบ™เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบนเบ‡เบชเบธเบ”เปเบฅเบฐเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆ.

เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเป„เบ”เป‰เบ–เบทเบเบเบฐเบเบฝเบกเบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™, เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เป‚เบ›เป‚เบ•เบ„เบญเบ™เปเบฅเบฐเบฎเบนเบšเปเบšเบšเบ•เปˆเบฒเบ‡เป†. เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบเบงเบกเป€เบญเบปเบฒเบžเบทเป‰เบ™เบ—เบตเปˆเป€เบŠเบฑเปˆเบ™: I/O, เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เป„เบŸเบฅเปŒ, เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ›เบปเบเบเบฐเบ•เบด, เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”, เป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ—เบตเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒเปเบฅเบฐเบงเบฑเบ™เบ—เบต, เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ Unix primitives เบ—เบปเปˆเบงเป„เบ› (เป€เบŠเบฑเปˆเบ™: เปเบšเบšเบชเปเบฒเบซเบผเบงเบ”, fnmatch, เปเบฅเบฐ glob), parsing, เปเบฅเบฐเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”. เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เบเบฒเบ™เบœเบนเบเบกเบฑเบ”เป„เบ”เป‰เบ–เบทเบเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” OpenGL, SDL2, เปเบฅเบฐ libui.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบ‚เบฝเบ™เบ”เป‰เบงเบเบžเบฒเบชเบฒ Hare เบ›เบฐเบเบญเบšเบกเบต Helios microkernel, เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™ Himitsu, เบฅเบฐเบšเบปเบš raytracing, เป‚เบ›เบฃเปเบเบฃเบกเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบเปˆเบญเบ‡, daemon btqd bittorrent, scheduled (เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบท cron), toothbrush (เบฅเบนเบเบ„เป‰เบฒ เปเบฅเบฐ server (เบชเบณเบฅเบฑเบšเป‚เบ›เป‚เบ•เบ„เบญเบ™เบ™เบดเป‰เบงเบกเบท). เปเบœเบ™เบเบฒเบ™เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เบฅเบงเบกเบกเบตเบเบฒเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบฅเบฐเบšเบธเบžเบฒเบชเบฒ เปเบฅเบฐ เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบกเบตเบ„เบงเบฒเบกเปเบฑเป‰เบ™เบ„เบปเบ‡, เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบชเบฐเปœเบฑเบšเบชเบฐเปœเบนเบ™เบชเบณเบฅเบฑเบšเปเบžเบฅเบ”เบŸเบญเบก เปเบฅเบฐ เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเบณเบ—เบตเปˆเบ‚เบฒเบ”เบซเบฒเบเป„เบ›, เปเบฅเบฐ เบเบฒเบ™เป€เบžเบตเปˆเบกเบŸเบฑเบ‡เบŠเบฑเบ™เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เป€เบžเบทเปˆเบญเบชเบฐเปœเบฑเบšเบชเบฐเปœเบนเบ™ TLS 1.2 เปเบฅเบฐ 1.3.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบฅเบฐเบซเบฑเบ” Hare: เปƒเบŠเป‰ crypto::sha256; เปƒเบŠเป‰เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”::hex; เปƒเบŠเป‰ fmt; เปƒเบŠเป‰ hash; useio; เปƒเบŠเป‰ os; เบชเบปเปˆเบ‡เบญเบญเบ fn main() void = { const hash = sha256::sha256(); const file = os::open("main.ha"); deferio::close(file); io::copy(&hash, file); let sum: [sha256::SIZE]u8 = [0โ€ฆ]; hash::sum(&hash, sum); hex::encode(os::stdout, sum); fmt::println(); const greetings = [ "เบชเบฐเบšเบฒเบเบ”เบต, เป‚เบฅเบ!", "ยกHola Mundo!", "ฮ“ฮตฮนฮฌ ฯƒฮฟฯ… ฮšฯŒฯƒฮผฮต!", "เบชเบฐเบšเบฒเบเบ”เบตเป‚เบฅเบ!", "ใ“ใ‚“ใซใกใฏไธ–็•Œ๏ผ", ]; เบชเปเบฒเบฅเบฑเบš (เปƒเบซเป‰ i = 0z; i < len(เบ—เบฑเบเบ—เบฒเบ); i += 1) { fmt::println(เบŠเบปเบกเป€เบŠเบตเบ[i]); }; เปƒเบซเป‰ x: *int = alloc(42); fmt::printfln("x: {}", x); fmt::printfln("*x: {}", *x); เบŸเบฃเบต(x); const file = os::open(os::args[1]); deferio::close(file); เปƒเบซเป‰ buffer: *[65535]u8 = alloc([0โ€ฆ]); defer free(buffer); const n = io::read(file, buffer)! เบ‚เบฐเบซเบ™เบฒเบ”; io::write(os::stdout, buffer[..n])!; }; fn sort(เบฅเบฒเบเบเบฒเบ™: []int) void = { โ€ฆ }; @test fn sort() void = { เปƒเบซเป‰เบฅเบฒเบเบเบฒเบ™ = [5, 4, 3, 2, 1]; เบ„เบฑเบ” (เบฅเบฒเบเบเบฒเบ™); for (เปƒเบซเป‰ i = 1z; i < len(items); i += 1) { assert(items[i - 1] <= items[i], "list is unsorted"); }; };

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เบŠเบทเป‰เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡ DDoS, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ VPS VDS ๐Ÿ”ฅ เบŠเบทเป‰เป€เบงเบฑเบšเป„เบŠเบ—เปŒเป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบ”เป‰เบงเบเบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™ DDoS, เป€เบŠเบตเบšเป€เบงเบต VPS VDS | ProHoster