.TH "ros-dump" "1" "" "" "" .hy .SH "نام (NAME)" ros\-dump \- ایجاد یک ایمیج دامپ‌شده از اسکریپت roswell .SH "خلاصه دستور (SYNOPSIS)" .PP \f[B]ros [OPTIONS1\&...] dump [OPTIONS2\&...] MODE\f[R] args\&... .PP \f[C]OPTIONS1\f[R] گزینه‌های استاندارد roswell مانند \f[C]\-L\f[R] یا \f[C]\-m LISP\f[R] را مشخص می‌کند. \f[C]OPTIONS2\f[R] گزینه‌های کاهش اندازهٔ ایمیج را مشخص می‌کند که در ادامه شرح داده می‌شوند. \f[C]MODE\f[R] یکی از مقادیر \f[C]output\f[R] یا \f[C]executable\f[R] است. .SH "توضیحات (DESCRIPTION)" .PP \f[C]ros\-dump\f[R] یک ایمیج لیسپ دامپ‌شده از وضعیت جاری پس از پردازش تمام گزینه‌های \f[C]OPTIONS1\f[R] ایجاد می‌کند. .PP این دستور دارای دو حالت \f[C]output\f[R] و \f[C]executable\f[R] است. در هر دو حالت، محیط سراسری (به‌عنوان مثال مقیدسازی سراسری به متغیرهای ویژه مانند \f[C]*package*\f[R]) در وضعیتی که بلافاصله پس از راه‌اندازی مجدد وجود دارد، همان محیطی است که هنگام دامپ شدن اسکریپت فعال بوده است. .PP ایمیج دامپ‌شده معمولاً بین پیاده‌سازی‌های مختلف و همچنین بین نسخه‌های مختلف آن‌ها سازگار نیست. .SH "حالت‌های دامپ (DUMP MODES)" .SS output [\-f] [\-o OUTPUT] NAME .PP اسکریپت roswell با نام \f[C]NAME\f[R] را بارگذاری کرده و وضعیت جاری لیسپ را در یک ایمیج ذخیره می‌کند. .PP فایل ایمیج به‌طور پیش‌فرض به شکلی سازمان‌یافته در یک دایرکتوری داخلی از roswell ذخیره می‌شود؛ یعنی مکانی در \f[C]$ROSWELL_INSTALL_DIR\f[R] که بر اساس پیاده‌سازی فعلی، نسخهٔ آن و \f[C]NAME\f[R] داده‌شده تعیین می‌گردد. .PP هنگامی که فایل خروجی از قبل وجود داشته باشد، دستور با یک کد خطا ناموفق می‌شود. .PP این ایمیج را می‌توان با دستور \f[C]ros \-m IMAGE\f[R] بارگذاری کرد. هنگام راه‌اندازی مجدد از روی ایمیج، زیردستورهای استاندارد roswell و آرگومان‌های اضافی اسکریپت نیز در دسترس هستند؛ به عنوان مثال \f[C]ros run\f[R] برای ادامه با یک repl، یا \f[C]\-\-restart FUNC\f[R] برای فراخوانی یک تابع خاص، که انعطاف‌پذیری لازم را فراهم می‌آورد. .TP .B \f[C]\-o OUTPUT\f[R] ایمیج به جای مکان پیش‌فرض، در \f[C]OUTPUT\f[R] ذخیره می‌شود. .TP .B \f[C]\-f\f[R] در صورتی که فایل خروجی از قبل وجود داشته باشد، بازنویسی آن را تحمیل می‌کند. .SS executable NAME [\-o OUTPUT] .PP هنگامی که یک اسکریپت با حالت \f[C]executable\f[R] دامپ می‌شود، ایمیج دامپ‌شده به یک فایل باینری اجرایی مستقل تبدیل می‌شود که به‌طور خودکار \f[C]\-\-restart main\f[R] را اعمال می‌کند. .PP اگر \f[C]OUTPUT\f[R] مشخص شده باشد، فایل باینری حاصل در آن ذخیره می‌شود. در غیر این صورت، نام فایل خروجی از روی \f[C]NAME\f[R] تعیین شده و در همان دایرکتوری ذخیره می‌گردد. در ویندوز و در صورتی که \f[C]SCRIPT\f[R] دارای پسوند \f[C].ros\f[R] باشد، نام فایل \f[C]SCRIPT.exe\f[R] خواهد بود. در سایر سیستم‌ها، نتیجه \f[C]SCRIPT\f[R] (بدون پسوند) خواهد بود. .PP این قابلیت در SBCL، CCL، CMUCL، CLISP و ECL پشتیبانی می‌شود. .SH "گزینه‌های کاهش اندازهٔ ایمیج (IMAGE REDUCTION OPTIONS)" .PP این گزینه‌ها پیوند برخی ارجاعات به اشیاء زمان اجرا را حذف می‌کنند و به GC اجازه می‌دهند تا بخشی از حافظه را بازپس گیرد، که در نهایت حجم ایمیج دامپ‌شده را کاهش می‌دهد. .PP باید دقت شود که برنامهٔ حاصل طبق انتظار کار کند، زیرا برخی از این عملیات ممکن است مفروضات معمول برنامه‌های منطبق با استاندارد را از بین ببرند. به عنوان مثال، گزینه‌های کاهش اندازهٔ مرتبط با بسته‌ها ممکن است فراخوانی‌های زمان اجرا به \f[C]READ\f[R] را پس از راه‌اندازی مجدد مختل کنند. .PP گزینه‌های کاهش اندازه به ترتیب از چپ به راست پردازش می‌شوند. .TP .B \[en]disable\-compression, \[en]enable\-compression, \-c این گزینه‌ها قابلیت فشرده‌سازی هسته (core compression) را در SBCL غیرفعال/فعال/فعال می‌کنند. بنابراین این گزینه تنها در SBCL کاربرد دارد. فشرده‌سازی به‌طور پیش‌فرض فعال است. .TP .B \[en]remove\-docstrings این گزینه تمام رشته‌های مستندات (docstrings) را از تمام نمادها در کل ایمیج لیسپ حذف می‌کند. .TP .B \[en]delete\-package PKG این گزینه را می‌توان چندین بار مشخص کرد. این گزینه نمادها را از PACKAGE خارج (unintern) کرده، \f[C]makeunbound\f[R] و \f[C]fmakeunbound\f[R] را روی هر نماد فراخوانی می‌کند و سپس بسته را حذف می‌نماید. نام بسته‌ها به‌طور خودکار به حروف بزرگ (string\-upcase) تبدیل می‌شوند. .TP .B \[en]delete\-all\-packages این گزینه \[en]delete\-package PKG را روی همهٔ بسته‌ها اعمال می‌کند، به جز چند بستهٔ موجود در لیست سیاه (keyword، roswell، ROS.SCRIPT.DUMP، و بستهٔ مربوط به نماد تابع main). .TP .B \[en]delete\-packages\-except PACKAGE این گزینه را می‌توان چندین بار مشخص کرد. این گزینه مشابه \[en]delete\-all\-packages است با این تفاوت که PACKAGE را به لیست سیاه اضافه می‌کند. نام بسته‌ها به‌طور خودکار به حروف بزرگ (string\-upcase) تبدیل می‌شوند. .TP .B \[en]destroy\-packages\-sbcl این یک گزینهٔ مخصوص SBCL است که از روش‌های فوق تهاجمی‌تر عمل می‌کند (بیش از ۱۰ مگابایت کاهش حجم). این گزینه سیستم بسته‌ها را با دستکاری جداول داخلی آن‌ها، پاکسازی کش‌های مربوط به package\-use\-list و موارد مشابه تخریب می‌کند. لیست سیاه بین \[en]delete\-all\-packages و \[en]destroy\-packages\-sbcl مشترک است. با این حال، این روش fmakunbound/makunbound را فراخوانی نمی‌کند، بنابراین ترکیب این دو روش می‌تواند منجر به کاهش حجم بسیار تهاجمی‌تری شود. با توجه به ماهیت این گزینه، بهتر است آن را به عنوان آخرین روش (یعنی سمت راست‌ترین گزینه) مشخص کنید. .TP .B \[en]purify, \[en]no\-purify این گزینه بین CCL، SBCL و CMUCL مشترک است. به منظور بهبود عملکرد بعدی GC، تمام اشیاء را به فضای ایستا (static space) که توسط GC پویش نمی‌شود منتقل می‌کند. خالص‌سازی (purification) به‌طور پیش‌فرض فعال است. .TP .B \[en]impurify, \[en]no\-impurify این یک گزینهٔ مخصوص CCL است (به‌طور پیش‌فرض فعال است). تمام اشیاء را پیش از ذخیرهٔ ایمیج به فضای پویا (dynamic space) منتقل می‌کند. این کار امکان جمع‌آوری اشیاء فضای ایستا توسط GC را فراهم می‌سازد. هنگامی که خالص‌سازی فعال باشد، پیش از اجرای GC خالص‌ساز، تمام اشیاء را ناخالص (impurify) می‌کند. .TP .B \[en]delete\-debug\-info اطلاعات اشکال‌زدایی توابع (مورداستفاده برای نمایش stack frame و غیره)، و همچنین موقعیت سورس‌کد و اطلاعات منسوخ‌شدگی نمادهای مختلف را حذف می‌کند. تنها مخصوص SBCL است. این گزینه تأثیر زیادی دارد (بیش از ۱۰ مگابایت کاهش). .TP .B \[en]delete\-macro\-definitions, \[en]delete\-compiler\-macro\-definitions با این فرض که در زمان اجرا هیچ کامپایل یا تفسیر کدی انجام نخواهد شد، تمام تعاریف مربوط به ماکروها و compiler\-macroها را حذف می‌کند. این گزینه باید بین پیاده‌سازی‌های مختلف قابل حمل (portable) باشد. در SBCL حدود ۲ مگابایت کاهش حجم ایجاد می‌کند. .TP .B \[en]delete\-compiler\-information\-sbcl این یک گزینهٔ مخصوص SBCL است که از روش‌های فوق تهاجمی‌تر است (حدود ۴ مگابایت کاهش). علاوه بر تعاریف ماکرو و compiler\-macro، سیستم‌های کامپایلر داخلی SBCL را نیز با حذف اطلاعات inlining، مبدل IR1 و IR2 (یا VOP) تخریب می‌کند. .SH "همچنین ببینید (SEE ALSO)" .PP \f[I]sbcl\f[R](1) \f[I]ros\f[R](1) \f[I]ros\-init\f[R](1) .SH "نویسندگان (AUTHORS)" تیم پروژهٔ Roswell.