Lore؛ سیستم کنترل نسخهٔ متنباز اپیک گیمز
خلاصهٔ کاملتر
اپیک گیمز یه سیستم کنترل نسخهٔ (version control) جدید و متنباز به اسم Lore منتشر کرده که خودش رو «نسل بعدی کنترل نسخه» معرفی میکنه. به گفتهٔ پروژه، برخلاف Git که بیشتر دور کد میچرخه، Lore از اول برای پروژههایی طراحی شده که کد رو با فایلهای باینری سنگین ترکیب میکنن — مثل بازیها و صنعت سرگرمی — و هم به درد برنامهنویسها میخوره هم آرتیستها.
نکتهٔ مهم اینه که Lore با زبان Rust نوشته شده و یه سیستم متمرکز (centralized) و content-addressed محسوب میشه؛ یعنی دادهها بر اساس هشِ محتواشون توی یه درخت مرکل (Merkle tree) ذخیره و آدرسدهی میشن. همین باعث میشه مقایسه، بررسی صحت داده و استفادهٔ دوباره از داده بین شاخهها و تاریخچه سریع باشه.
برای فایلهای بزرگ، Lore هر فایل رو به تکههای (chunk) قابلاستفادهٔ مجدد میشکنه و با ایندکس نگه میداره تا هم دادهی تکراری کم بشه هم انتقال و آپدیت فایلهای حجیم بهینه بمونه. علاوهبراین یه قابلیت hydration بر اساس نیاز داره: workspace میتونه سبک بمونه و دادهی هر فایل فقط وقتی که واقعاً لازمه دانلود بشه، نه اینکه از اول همهچی رو بگیری.
زنجیرهٔ نسخهها هم تغییرناپذیر (immutable) و رمزنگاریشدهست؛ امضای هشِ هر نسخه از روی وضعیت اون نسخه و هشِ نسخهٔ والد و دادههاش ساخته میشه، پس یه تاریخچهٔ دستکاریناپذیر و قابلاعتماد میسازه. شاخهها هم سبکان و ساخت و سوییچکردنشون کمهزینهست، چون دادهی زیرین کپی نمیشه.
فعلاً کل دسترسی به Lore از طریق CLI انجام میشه و یه API کامل هم داره که با C/C++، C#، Rust، Go، Python و JavaScript میشه باهاش کار کرد؛ برای چند زبان SDK جدا هم منتشر شده. Lore زیر لایسنس MIT کاملاً متنبازه. نویسنده اشاره میکنه که این ابزار سیستم کنترل نسخهٔ داخلی UEFN (آنریل ادیتور برای فورتنایت) هم هست، هرچند فعلاً بهخاطر یه فرمت فشردهسازی اختصاصی، ابزار متنباز هنوز نمیتونه مستقیم با نسخهٔ UEFN حرف بزنه.
یه نکتهٔ مهم اینه که Lore هنوز pre-1.0 و در حال توسعهٔ فعاله، پس ممکنه اینترفیسها، فرمتهای روی دیسک و APIها بین نسخهها عوض بشن. یعنی فعلاً بیشتر برای امتحانکردن و دنبالکردن مسیرشه تا استفادهٔ جدی توی پروداکشن.
نکات کلیدی:
- Lore یه سیستم کنترل نسخهٔ متنباز و متمرکز از اپیک گیمزه که با Rust نوشته شده
- برای پروژههایی که کد رو با فایلهای باینری سنگین ترکیب میکنن (مثل بازیها) بهینه شده
- از ذخیرهسازی content-addressed، درخت مرکل و chunkingِ فایلهای بزرگ استفاده میکنه
- workspaceها سبکان و داده فقط بر اساس نیاز دانلود میشه
- زیر لایسنس MIT متنبازه و برای JS، Python، C# و Go هم SDK داره
- فعلاً pre-1.0 و در حال توسعهست




