Ang proyekto sa Solod nagpalambo og usa ka subset sa pinulongan nga Go nga gihubad ngadto sa pinulongan nga C.

Gipresentar ang Solod (So) programming language. Naghatag kini og subset sa Go language nga gi-transcompile ngadto sa C (C11) representation nga angay para sa compilation gamit ang GCC, Clang, ug zig cc compilers. Ang pangunang kalainan tali sa Solod ug Go ug Tinygo mao ang paggamit sa manual memory management, nga naglihok nga walay garbage collector, automatic memory allocation, ug reference counting. Ang transpiler para sa Solod gisulat sa Go ug gi-distribute ubos sa BSD license. Gisuportahan niini ang Linux, macOS и Windows.

Ang pinulongan nagsuporta sa mga istruktura, pamaagi, interface, slice, function nga nagbalik og daghang mga kantidad (pananglitan, resulta + error code), generics, ug deferred calls (defer). Para sa kasayon, ang pinulongan wala nagsuporta sa mga channel, coroutine, o closures. Ang Solod development makagamit sa kasamtangang mga LSP server, linter, integrated development environment, ug code editor nga nagsuporta sa Go language, ingon man ang "go test" toolchain.

Ang code nga gisulat sa Solod mahimong i-integrate sa mga aplikasyon sa C (mahimo sa C nga motawag sa mga function sa Solod ug vice versa) ug dili magkinahanglan og runtime. Ang mga nag-unang bahin sa aplikasyon naglakip sa systems programming, nga adunay mga kapabilidad nga susama sa C, apan adunay Go-style syntax ug type checking. Mahimo usab nga gamiton ang Solod sa pag-port sa mga Go libraries para magamit sa mga proyekto sa C. Ang mga pakete sa Go sama sa strings, io, bytes, mem, slices, ug uban pa gi-port na sa C. Gawas pa sa hugpong sa mga gi-port nga Go libraries, ang mga programa sa Solod makagamit og mga binding para sa standard nga C library, libc.

Sa default, ang tanang memorya gi-allocate sa stack, apan ang heap allocation posible gamit ang Alloc / Free functions sa standard library. Ang garbage collection ug reference counting wala gigamit, apan ang Solod naghatag og mga feature para sa type checking ug mga crash kung mo-access sa array nga out of bounds. Ang dangling pointer returns ug memory misfreeding wala gi-check. Ang paggamit sa AddressSanitizer (-fsanitize=address) sa modernong mga compiler gihisgutan isip pangunang pamaagi sa pag-detect sa mga isyu sa memorya.

Kon hisgutan ang performance, ang mga compiled program nga gisulat sa Solod kasagaran mas paspas kay sa mga Go program. Pananglitan, ang mga function gikan sa Byte package mo-perform og 1.5 ka pilo nga mas paspas nga adunay parehas nga memory consumption. Ang Byte buffer operations kay 1.3 ka pilo nga mas paspas para sa pagbasa ug 2-4 ka pilo nga mas paspas para sa pagsulat. Sa Map package, ang integer key retrieval kay 3.4 ka pilo nga mas paspas, apan ang key modification kay 1.6 ka pilo nga mas hinay. Ang string key retrieval parehas sa Go, apan ang modification kay 1.5 ka pilo nga mas hinay. Ang pag-parse ug pag-format sa mga integer kay 2 ka pilo nga mas paspas, ug ang floating-point parsing kay 1.5/1.2 ka pilo nga mas paspas. Ang string functions kay 1.3 ka pilo nga mas paspas, ug ang string creation kay 2-4 ka pilo nga mas paspas nga adunay 10-20% nga pagkunhod sa memory consumption.

Source: opennet.ru

Pagpalit kasaligan nga pag-host alang sa mga site nga adunay proteksyon sa DDoS, mga server sa VPS VDS 🔥 Pagpalit og kasaligang website hosting nga adunay proteksyon sa DDoS, VPS VDS servers | ProHoster