#zig #comptime
خب خب خب
من تا چند وقت پیش فک میکردم نمیشه مثلا یه چیز ArrayList طوری توی کامپتایم زیگ درست کرد
ولی امشب خیلی تصادفی به این بنده خدا برخوردم :
https://github.com/ziglibs/computils/blob/master/src/comptime_array_list.zig
که خب خیییلی کد قدیمی ایه و احتمالا هم کار نمیکنه
ولی خب ایده گرفتم ازش و کد بالارو زدم
اگه حال داشتید میتونید خودتون اجرا کنید
ولی اون بالا رسما یه پیاده سازی آرایه قابل گسترشیه که توی زمان کامپایل میتونه گسترش پیدا بکنه
و در نهایت وقتی کارمون زمان کامپایل تموم شد میتونیم آرایه رو نهایی بکنیم و از اونجا به بعد دیگه میتونه توی زمان اجرا هم استفاده بشه
const std = @import("std");
fn ComptimeArrayList(T: type) type {
return struct {
__total_mem: []T,
__size: usize,
const Arr = @This();
fn init() Arr {
var new_mem: [1]T = undefined;
return .{
.__size = 0,
.__total_mem = new_mem[0..],
};
}
fn append(comptime self: *Arr, comptime item: T) void {
if (self.__size == self.__total_mem.len) {
var new_mem: [self.__total_mem.len * 2]T = undefined;
@memcpy(new_mem[0..self.__total_mem.len], self.__total_mem);
new_mem[self.__size] = item;
self.__total_mem = new_mem[0..];
self.__size += 1;
} else {
self.__total_mem[self.__size] = item;
self.__size += 1;
}
}
fn items(self: *Arr) []T {
return self.__total_mem[0..self.__size];
}
fn finalize(comptime self: *Arr) [self.__size]T {
var result_mem: [self.__size]T = undefined;
@memcpy(result_mem[0..], self.__total_mem[0..self.__size]);
return result_mem;
}
};
}
pub fn main() !void {
comptime var arr = ComptimeArrayList(i32).init();
comptime {
arr.append(1);
arr.append(2);
arr.append(3);
arr.append(4);
arr.append(5);
}
const result = comptime arr.finalize();
for (result) |x| {
std.debug.print("{} ", .{x});
}
std.debug.print("\n", .{});
}خب خب خب
من تا چند وقت پیش فک میکردم نمیشه مثلا یه چیز ArrayList طوری توی کامپتایم زیگ درست کرد
ولی امشب خیلی تصادفی به این بنده خدا برخوردم :
https://github.com/ziglibs/computils/blob/master/src/comptime_array_list.zig
که خب خیییلی کد قدیمی ایه و احتمالا هم کار نمیکنه
ولی خب ایده گرفتم ازش و کد بالارو زدم
اگه حال داشتید میتونید خودتون اجرا کنید
ولی اون بالا رسما یه پیاده سازی آرایه قابل گسترشیه که توی زمان کامپایل میتونه گسترش پیدا بکنه
و در نهایت وقتی کارمون زمان کامپایل تموم شد میتونیم آرایه رو نهایی بکنیم و از اونجا به بعد دیگه میتونه توی زمان اجرا هم استفاده بشه
GitHub
computils/src/comptime_array_list.zig at master · ziglibs/computils
Zig utilities for all your comptime needs. Contribute to ziglibs/computils development by creating an account on GitHub.
🔥1
نمیدانم
#zig #comptime const std = @import("std"); fn ComptimeArrayList(T: type) type { return struct { __total_mem: []T, __size: usize, const Arr = @This(); fn init() Arr { var new_mem: [1]T = undefined; …
البته اینم بگم که یه proposal برای تخصیص دهنده های امن زمان کامپایل وجود داره که هنوز کارش انجام نشده ولی این حقه هه کار میکنه
نمیدانم
#zig #comptime const std = @import("std"); fn ComptimeArrayList(T: type) type { return struct { __total_mem: []T, __size: usize, const Arr = @This(); fn init() Arr { var new_mem: [1]T = undefined; …
https://www.youtube.com/watch?v=lYSJo36KYZk
واقعا فیسبوک عالیه
مقاله هه با اینجا شروع میشه که میان یه بنچمارک تخیلی درست میکنن و باهاش به این نتیجه میرسن که گیت کنده (؟)
بعدش میگردن دنبال جایگزین و mercurial رو که با پایتون نوشته شده رو انتخاب میکنن
واقعا فیسبوک عالیه
مقاله هه با اینجا شروع میشه که میان یه بنچمارک تخیلی درست میکنن و باهاش به این نتیجه میرسن که گیت کنده (؟)
بعدش میگردن دنبال جایگزین و mercurial رو که با پایتون نوشته شده رو انتخاب میکنن
YouTube
Why Facebook Doesn't Use Git
Recorded live on twitch, GET IN
### Article
https://graphite.dev/blog/why-facebook-doesnt-use-git
By: Greg Foster | https://x.com/gregmfoster
### My Stream
https://twitch.tv/ThePrimeagen
### Best Way To Support Me
Become a backend engineer. Its my favorite…
### Article
https://graphite.dev/blog/why-facebook-doesnt-use-git
By: Greg Foster | https://x.com/gregmfoster
### My Stream
https://twitch.tv/ThePrimeagen
### Best Way To Support Me
Become a backend engineer. Its my favorite…
😁2
#zig
یه کتابخونه چند بستری نیاز داشتم برای این پنجره های انتخاب فایل و پوشه توی زیگ
یکی بود ولی بر مبنی یه نسخه قدیمی یه پروژه c بود و یکی دیگم بود که برمبنی نسخه جدید همون پروژه هه بود ولی هیچی نداشت عملا
امروز نشستم و اونو کاملش کردم
https://github.com/MahdiGMK/nfde-zig
یه کتابخونه چند بستری نیاز داشتم برای این پنجره های انتخاب فایل و پوشه توی زیگ
یکی بود ولی بر مبنی یه نسخه قدیمی یه پروژه c بود و یکی دیگم بود که برمبنی نسخه جدید همون پروژه هه بود ولی هیچی نداشت عملا
امروز نشستم و اونو کاملش کردم
https://github.com/MahdiGMK/nfde-zig
GitHub
GitHub - MahdiGMK/nfde-zig: Zig bindings for nativefiledialog-extended
Zig bindings for nativefiledialog-extended. Contribute to MahdiGMK/nfde-zig development by creating an account on GitHub.
🔥5
یه چیز خنده دار دیگه بگم از ویندوز
نصاب VS (و همه جعبه ابزارای مایکروسافت) حداقل اندازه داره و باید نمایشگرت از یه اندازه ای بزرگتر باشه 😂
به جز اینم واقعا شاهکاره که یه کامپایلرو میخوای نصب کنی باید ۹۰۰ مگ دانلود کنی و ۴ گیگ حافظه بهش بدی
نصاب VS (و همه جعبه ابزارای مایکروسافت) حداقل اندازه داره و باید نمایشگرت از یه اندازه ای بزرگتر باشه 😂
به جز اینم واقعا شاهکاره که یه کامپایلرو میخوای نصب کنی باید ۹۰۰ مگ دانلود کنی و ۴ گیگ حافظه بهش بدی
واای خدای من 😂
به نظر میرسه فقط من "مشکل کمبود EQ" ندارم و کیانوش مختاریان و آدمای گوگل و ... هم دارن 😂
https://youtu.be/eIX97y3dT9c?t=4505
اگرم نمیدونید "مشکل کمبود EQ" چیه
ارجاع میکنم به اونایی که میدونن 😂😈
به نظر میرسه فقط من "مشکل کمبود EQ" ندارم و کیانوش مختاریان و آدمای گوگل و ... هم دارن 😂
https://youtu.be/eIX97y3dT9c?t=4505
اگرم نمیدونید "مشکل کمبود EQ" چیه
ارجاع میکنم به اونایی که میدونن 😂😈
YouTube
کیانوش مختاریان: مدیر و رهبر فنی سابق در گوگل
دوره طراحی مسیر شغلی (خودشناسی و یادگیری مهارتهای کلیدی مسیر شغلی)
https://B2n.ir/a75143
تلگرام پشتیبانی کارنکن
https://news.1rj.ru/str/Karnakonsupport
بات تلگرام راهنمای کارنکن
https://news.1rj.ru/str/karnakonhelp_bot
======
مهمان این قسمت کیانوش مختاریانه، مدیر سابق یکی از تیمهای…
https://B2n.ir/a75143
تلگرام پشتیبانی کارنکن
https://news.1rj.ru/str/Karnakonsupport
بات تلگرام راهنمای کارنکن
https://news.1rj.ru/str/karnakonhelp_bot
======
مهمان این قسمت کیانوش مختاریانه، مدیر سابق یکی از تیمهای…
❤4🔥1🤣1
https://news.ycombinator1.com/item?id=46064571
پیرو مهاجرت زیگ از روی گیتهاب به طرف codeberg
منم کتابخونه هامو از این به بعد میبرم اونور
پیرو مهاجرت زیگ از روی گیتهاب به طرف codeberg
منم کتابخونه هامو از این به بعد میبرم اونور
Hacker News
Migrating the main Zig repository from GitHub to Codeberg | Hacker News
725 votes - 642 comments - posted 13 hours ago
🔥5
Forwarded from Tensorflow(@CVision)
This media is not supported in your browser
VIEW IN TELEGRAM
نه بابا هوش مصنوعی قراره دنیارو بگیره.
🤣11
Tensorflow(@CVision)
نه بابا هوش مصنوعی قراره دنیارو بگیره.
از ته قلب میخوام که حباب للم ها بترکه و اینهمه آسیب که دارن به دنیا و اقتصاد میزنن متوقف بشه
https://www.youtube.com/watch?v=ERiXDhLHxmo
https://www.youtube.com/watch?v=ERiXDhLHxmo
👍7👎2💩1
نمیدانم
https://www.youtube.com/watch?v=ERiXDhLHxmo
ولی حالا مستقل از اینکه با نظر من موافقید یا نه اینو ببینید
https://youtu.be/2PgjgTT27Os?t=1061
جدیدترین پیش نمایش از سیستم Async Io زیگ
جدیدترین پیش نمایش از سیستم Async Io زیگ
YouTube
Zigtoberfest 2025
Zigtoberfest, launched in 2024, is a conference focused on sharing experience and knowledge among the Zig community. This event is a fantastic chance to connect with like-minded individuals from the Zig community and share your passion for programming.
The…
The…