Drew DeWalt๋Š” Hare ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค.

Sway ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ, Aerc ์ด๋ฉ”์ผ ํด๋ผ์ด์–ธํŠธ, SourceHut ํ˜‘์—… ๊ฐœ๋ฐœ ํ”Œ๋žซํผ์˜ ๊ฐœ๋ฐœ์ž์ธ Drew DeVault๊ฐ€ Hare ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” ํŒ€๊ณผ ํ•จ๊ป˜ ์ง€๋‚œ 2๋…„ ๋ฐ˜ ๋™์•ˆ ์ด๋ฅผ ๊ฐœ๋ฐœํ•ด ์™”์Šต๋‹ˆ๋‹ค. ํ—ค์–ด๋Š” C ์–ธ์–ด์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ C๋ณด๋‹ค ๊ฐ„๋‹จํ•œ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ํ—ค์–ด์˜ ์ฃผ์š” ์„ค๊ณ„ ์›์น™์—๋Š” ๋‹จ์ˆœํ™”์— ์ค‘์ ์„ ๋‘๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์ž‘์—…์— ๋Œ€ํ•œ ์™„์ „ํ•œ ์‹ ๋ขฐ(์ž๊ธฐ ์ฃผ๋„์ ์ด๊ฑฐ๋‚˜ ์•”๋ฌต์ ์ธ ํ–‰๋™ ์—†์ด ์ง€์ •๋œ ์ž‘์—…์„ ์ •ํ™•ํžˆ ์ˆ˜ํ–‰)๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜์™€ ๋ฌธ์ œ๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๋ณด์กฐ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ปดํŒŒ์ผ๋Ÿฌ ๋ฐ ํˆด์ฒด์ธ ์†Œ์Šค ์ฝ”๋“œ๋Š” GPLv3 ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ, ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฝ”๋“œ๋Š” MPL(Mozilla Public License) ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๊ณต๊ฐœ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ์šด์˜ ์ฒด์ œ ์ง€์›์ด ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Linux ๋˜ํ•œ x86_64, aarch64 ๋ฐ riscv64 ํ”Œ๋žซํผ์˜ FreeBSD์™€ ๋ฒ ์–ด๋ฉ”ํƒˆ ์šด์˜์„ ์œ„ํ•œ ๋…๋ฆฝ ์‹คํ–‰ํ˜• ๊ตฌํ˜„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ–ฅํ›„ NetBSD, OpenBSD, Illumos, Haiku ๋ฐ Plan 9 ์šด์˜ ์ฒด์ œ์™€ ppc64le, i686 ๋ฐ arm32 ํ”Œ๋žซํผ ์ง€์›์„ ๊ณ„ํšํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์–ธ์–ด๋Š” ์ˆ˜๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์™€ ๊ฐ ๋ณ€์ˆ˜์— ํŠน์ • ์œ ํ˜•์„ ๋ช…์‹œ์ ์œผ๋กœ ํ• ๋‹นํ•ด์•ผ ํ•˜๋Š” ์ •์  ์œ ํ˜• ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์ตœ์†Œ ๋Ÿฐํƒ€์ž„์ด ์ฒจ๋ถ€๋ฉ๋‹ˆ๋‹ค. ์ด ์–ธ์–ด๋Š” ์ตœ๋Œ€ ์„ฑ๋Šฅ๊ณผ ์ „์ฒด ์‹คํ–‰ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•œ ์šด์˜ ์ฒด์ œ, ์ปดํŒŒ์ผ๋Ÿฌ, ๋„คํŠธ์›Œํฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ฐ ์‹œ์Šคํ…œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๊ฐœ๋ฐœ๊ณผ ๊ฐ™์€ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‘œ์ค€ ๊ธฐ๋Šฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ค€๋น„๋˜์–ด ์šด์˜ ์ฒด์ œ์˜ ๊ธฐ๋ณธ ์ธํ„ฐํŽ˜์ด์Šค, ํ‘œ์ค€ ์•Œ๊ณ ๋ฆฌ์ฆ˜, ํ”„๋กœํ† ์ฝœ ๋ฐ ํ˜•์‹ ๊ตฌํ˜„์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ž…๋ ฅ/์ถœ๋ ฅ, ํŒŒ์ผ ์กฐ์ž‘, ์ •๊ทœ์‹, ์•”ํ˜ธํ™”, ๋„คํŠธ์›Œํ‚น, ์‹œ๊ฐ„ ๋ฐ ๋‚ ์งœ ์ž‘์—…, ์ผ๋ฐ˜์ ์ธ Unix ๊ธฐ๋ณธ ์š”์†Œ(์˜ˆ: poll, fnmatch ๋ฐ glob)์— ๋Œ€ํ•œ ์•ก์„ธ์Šค, ๊ตฌ๋ฌธ ๋ถ„์„ ๋ฐ ์œ ํ˜• ๊ฒ€์‚ฌ์™€ ๊ฐ™์€ ์˜์—ญ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. OpenGL, SDL2 ๋ฐ libui ๊ธฐ๋Šฅ์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ”์ธ๋”ฉ์€ ๋ณ„๋„๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

Hare ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ์ ํŠธ์˜ ์˜ˆ๋กœ๋Š” Helios ๋งˆ์ดํฌ๋กœ์ปค๋„, Himitsu ์•”ํ˜ธ ๊ด€๋ฆฌ์ž, ๋ ˆ์ดํŠธ๋ ˆ์ด์‹ฑ ์‹œ์Šคํ…œ, Box ์•”ํ˜ธํ™” ํ”„๋กœ๊ทธ๋žจ, btqd ๋น„ํŠธํ† ๋ ŒํŠธ ๋ฐ๋ชฌ, scheduled(cron๊ณผ ์œ ์‚ฌํ•œ ์‹œ์Šคํ…œ), toothbrush(ํด๋ผ์ด์–ธํŠธ ๋ฐ ์„œ๋ฒ„ (ํ•‘๊ฑฐ ํ”„๋กœํ† ์ฝœ์˜ ๊ฒฝ์šฐ). ํ–ฅํ›„ ๊ณ„ํš์—๋Š” ์–ธ์–ด ์‚ฌ์–‘ ๋ฐ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์•ˆ์ •ํ™”, ๋ˆ„๋ฝ๋œ ํ”Œ๋žซํผ ๋ฐ ์•„ํ‚คํ…์ฒ˜ ์ง€์› ๊ตฌํ˜„, TLS 1.2 ๋ฐ 1.3์„ ์ง€์›ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜ ์ถ”๊ฐ€ ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

Hare ์–ธ์–ด์˜ ์˜ˆ์ œ ์ฝ”๋“œ: crypto::sha256์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฝ”๋”ฉ::hex๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. fmt๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ํ•ด์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. io๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”; os๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”; export fn main() void = { const hash = sha256::sha256(); const ํŒŒ์ผ = os::open("main.ha")!; io::close(ํŒŒ์ผ)์„ ์ง€์—ฐํ•ฉ๋‹ˆ๋‹ค. io::copy(&hash, ํŒŒ์ผ)!; ํ•ฉ๊ณ„๋ฅผ ๊ตฌํ•ด๋ณด์ž: [sha256::SIZE]u8 = [0...]; ํ•ด์‹œ::ํ•ฉ๊ณ„(&ํ•ด์‹œ, ํ•ฉ); hex::encode(os::stdout, sum)!; fmt::println()!; const greetings = [ "์•ˆ๋…•ํ•˜์„ธ์š”, ์„ธ์ƒ!", "ํ™€๋ผ ๋ฌธ๋„!", "์ „ํˆฌ๋ฅผ ์ค€๋น„ํ•˜์„ธ์š”!", "์•ˆ๋…•ํ•˜์„ธ์š”, ์„ธ์ƒ!", "์„ธ์ƒ์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!", ]; (i = 0z; i < len(์ธ์‚ฌ๋ง); i += 1) { fmt::println(์ธ์‚ฌ๋ง[i])!; }; x๋ฅผ *int = alloc(42)๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. fmt::printfln(" x: {}", x)!; fmt::printfln("*x: {}", *x)!; ๋ฌด๋ฃŒ(x); const ํŒŒ์ผ = os::open(os::args[1])!; io::close(ํŒŒ์ผ)์„ ์ง€์—ฐํ•˜์„ธ์š”!; ๋ฒ„ํผ๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค: *[65535]u8 = alloc([0...]); ๋ฒ„ํผ ํ•ด์ œ ์ง€์—ฐ const n = io::read(ํŒŒ์ผ, ๋ฒ„ํผ)! ํฌ๊ธฐ๋กœ; io::write(os::stdout, ๋ฒ„ํผ[..n])!; }; fn ์ •๋ ฌ(ํ•ญ๋ชฉ: []int) void = { ... }; @test fn sort() void = { ํ•ญ๋ชฉ์„ [5, 4, 3, 2, 1]๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ •๋ ฌ(ํ•ญ๋ชฉ); for (let i = 1z; i < len(items); i += 1) { assert(items[i - 1] <= items[i], "๋ชฉ๋ก์ด ์ •๋ ฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค"); }; };

์ถœ์ฒ˜ : opennet.ru

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster