უკან დაბრუნება
Zig 0.17.0 გადაამუშავებს აწყობას და აფართოებს პლატფორმისა და ენის მხარდაჭერას
SiTech AI Team2 წთ. საკითხავი

Zig 0.17.0 გადაამუშავებს აწყობას და აფართოებს პლატფორმისა და ენის მხარდაჭერას

Zig 0.17.0 გადაამუშავებს build სისტემას, აუმჯობესებს ELF-ის linker-ს, აფართოებს პლატფორმის მხარდაჭერას და აახლებს ენის შესაძლებლობებს ხუთთვიანი განვითარების შემდეგ, რომელშიც მონაწილეობა მიიღო 206 კონტრიბუტორმა და 925 commit-მა.

რელიზის ძირითადი მასშტაბი

Zig 0.17.0 მოიცავს 206 კონტრიბუტორის მიერ 925 commit-ში შესრულებულ ხუთთვიან სამუშაოს. გამოშვება მნიშვნელოვნად ცვლის build სისტემას: maker პროცესს აცალკევებს configurer პროცესისგან, გადაამუშავებს ქეშის სისტემას, შემოაქვს configure cache poisoning და ამატებს Build Server Protocol-ს. ასევე აფართოებს lazy dependency-ისა და ფორმატირების ოფციებს.

ELF-ის linker-ი გაუმჯობესდა იმ დონემდე, რომ incremental compilation, სავარაუდოდ, ყველასთვის იმუშავებს x86_64-linux-ზე. პაკეტების მართვას ემატება local path-ის override-ები, ხოლო Windows-ის resource-ების კომპილაცია გადადის გარე პაკეტში.

სამიზნეების უფრო ფართო დაფარვა

პლატფორმულ სამუშაოებში შედის native CI-ის ტესტირება aarch64-openbsd-ისთვის და pull request-ის CI aarch64-freebsd-ისა და aarch64-netbsd-ისთვის. Zig ახორციელებს სავალდებულო კოდის გამაგრებას aarch64-openbsd-ისთვის, გვერდს უვლის LLVM-ის პრობლემას, რომელიც aarch64-windows-ის ბინარების უმეტესობას ეხება, და უზრუნველყოფს stack trace-ებს crash-ებისა და წარუმატებელი assertion-ებისთვის 32-ბიტიან ARM-სა და SPARC-ზე. Pointer authentication-ის ოპკოდები ახლა მუშავდება AArch64-ის stack unwinding-ის დროს.

დაემატა მხარდაჭერა loongarch32-linux-gnu სამიზნეებისთვის, ხოლო 64-ბიტიანი SPARC-ი ზოგადად გამოსაყენებელ სტატუსს მიაღწია. სამიზნეების ინფორმაცია დაემატა aarch64-switch, arm-gba, mipsel-psx და powerpc-wiiu-სთვის. xtensa-linux-ის ძალიან ადრეული მხარდაჭერა ხელმისაწვდომია C ან ექსპერიმენტული LLVM backend-ის მეშვეობით. სტანდარტულმა ბიბლიოთეკამ ასევე მიიღო მხარდაჭერა რამდენიმე ნიშური Linux, OpenBSD და no-libc სამიზნისთვის.

ენისა და ბიბლიოთეკის ცვლილებები

Zig-ის ფორმალური გრამატიკა და იმპლემენტაცია ერთმანეთს დაუკავშირდა გენერირებული recursive descent parser-ის მეშვეობით, რომელიც fuzzing oracle-ად გამოიყენება. @bitCast ბილთინი ახლა ხელახლა ინტერპრეტირებს მნიშვნელობის ლოგიკურ ბიტურ წარმოდგენას და ერთნაირად იქცევა სამიზნის endianness-ის მიუხედავად. მისი სემანტიკა შეიცვალა მასივებისა და ვექტორებისთვის, ხოლო extern struct-ებიდან ან union-ებიდან ქასთები აღარ არის დაშვებული. რელიზის შენიშვნები გვირჩევენ, გადაამოწმოთ მასივების ან ვექტორების გამოყენება, რადგან ზოგიერთი კოდი შეიძლება გატყდეს კომპილაციის შეცდომის გარეშე.

@cImport ბილთინი წაიშალა, ხოლო std.Build.Step.TranslateC მოძველებულად გამოცხადდა ოფიციალურ ZSF translate-c პაკეტზე აშკარა დამოკიდებულების სასარგებლოდ. ახალი @backingInt და @fromBackingInt ბილთინები ცვლიან მოძველებულ @intFromEnum და @enumFromInt ბილთინებს. Zig 0.17.0 ასევე ამატებს @SpirvType-ს, შემოაქვს SafeAllocator-ს და გადაამუშავებს StackFallbackAllocator-ს.

SSiTech

SiTech — AI-გაძლიერებული ვებ დეველოპმენტი

ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.