ম্যাভেনের অনুরূপ হ্যাস্কেল বিল্ডিং এবং আর্টিফ্যাক্ট পরিবেশ


20

আমি দীর্ঘদিন ধরে জাভা বিকাশকারী হয়ে থাকি, তবে সম্প্রতি আমি একটি হাস্কেল দলে যোগ দিয়েছি। জাভা বিশ্বে, আপনার যদি একটি বিশাল প্রকল্প থাকে, এতে বেশ কয়েকটি দল এতে কাজ করে থাকে, তবে একটি সাধারণ পন্থা হল মাভেনের মতো একটি আর্টিক্যাক্ট সার্ভার যেমন উন্নয়নের গতি বাড়িয়ে তোলা এবং ব্যবহার করা। পিঁপড়া, মাভেন, গ্রেডলের মতো অসংখ্য বিল্ড সরঞ্জামগুলি প্রকল্পটি তৈরি করতে পারে এবং আর্টিক্যাক্ট সার্ভারে একটি জার ফাইল আপলোড করতে পারে যা দলের ব্যথা ছাড়াই বাকী দল ব্যবহার করতে পারে। অতএব, প্রকল্পটিকে ছোট ছোট উপ-প্রকল্পে ভাগ করে নেওয়ার সময়টিও মারাত্মকভাবে হ্রাস পেয়েছে।

হাস্কেল দিকে, আমরা cabalপ্রকল্পটি তৈরিতে ব্যবহার করছি। আমাদের প্রকল্পটি অপটিমাইজেশন ছাড়াই তৈরি করতে 10-15 মিনিট সময় নেয়। সংকলক অপ্টিমাইজেশন চালু থাকলে কয়েক ঘন্টা সময় লাগে, যা বেদনাদায়ক।

আমি অবাক হই, আমরা এখানে জাভাতে যেমন করি তেমন কীভাবে করতে পারি। কোনও আর্টিফ্যাক্ট সার্ভারে প্যাকেজগুলির বাইনারি (গ্রন্থাগারগুলি) সংকলন এবং আপলোড করার এবং বিল্ড-টাইম সময়ে প্রাক-বিল্ট বাইনারিগুলি ব্যবহার করার কি সহজ উপায় আছে? আমি জানি যেহেতু হাস্কেল মেশিন কোড তৈরি করে (জাভাতে বাইট কোডের পরিবর্তে) সেখানে সামঞ্জস্যতা সংক্রান্ত সমস্যা থাকতে পারে, তবে আমাদের কাছে আর্টিফ্যাক্ট সার্ভারে সঞ্চিত বিভিন্ন আর্কিটেকচার / ওএসের জন্য আলাদা আলাদা বাইনারি থাকতে পারে।


আপনার প্রশ্নের উত্তর নয় তবে, আপনি -j বিকল্পের সাথে "ক্যাবল বিল্ড / ইনস্টল" করতে চান?
ড্যানিয়েল দাজা কার্টেট

হ্যাঁ, তবে আমি খুব বেশি স্পিডআপ দেখি না। নির্মাণের সময় সিপিইউ ব্যবহারের পরিমাণ প্রায় 15% -20%। আমি নিশ্চিত না কোথায় সমস্যা হল: cabal, GHC, Test.Frameworkঅথবা linker।
অক্সি

এই এসও উত্তর অনুসারে স্ট্যাকওভারফ্লো / প্রশ্ন / ২7171৩73৯৯০/২ এর প্রধান কারণ হ্যাস্কেল এক্সিকিউটেবলের আদি প্রকৃতি।
ড্যানিয়েল দাজ ক্যারেট

আমি বেশিরভাগ ক্ষেত্রেই উন্নয়নের কথা বলছি। এটি সত্য যে বাইনারি বিভিন্ন ওএস, সিপিইউ আর্কিটেকচার এবং এমনকি সংকলক সংস্করণগুলির কারণে বেমানান হতে পারে। তবে, যখন আমি একই মেশিন, একই ওএস এবং একই সংকলকটিতে প্রতিদিন বিকাশ করি তখন কেন আমি এত বেশি সময় নষ্ট করব?
অক্সি

দেখে মনে হচ্ছে একটি ক্যাশে সহ হালসিওন
Lubomír Sedlář

উত্তর:


2

আপনি নিক্সকে ব্যবহার করার বিষয়টি বিবেচনা করতে পারেন , যা হাস্কেলের পক্ষে শালীন সমর্থন সহ একটি সাধারণ-উদ্দেশ্য, ক্রস-প্ল্যাটফর্ম প্যাকেজ ম্যানেজার।

নিক্সের প্যাকেজগুলি সংজ্ঞায়িত করার জন্য একটি কাস্টম প্রোগ্রামিং ভাষা রয়েছে (যা খাঁটি, কার্যকরী এবং অলস বলে মনে হয়)। নতুন প্যাকেজগুলির সংজ্ঞা দেওয়া এবং বিদ্যমানগুলির প্রসারিত করা খুব সহজ (উদাঃ নির্ভরতা পরিবর্তন করা, ভিন্ন গিট রেপো থেকে উত্স পান ইত্যাদি)।

প্যাকেজগুলি হ্যাশ দ্বারা চিহ্নিত করা হয়, যার মধ্যে নির্ভরতা অন্তর্ভুক্ত থাকে। তাই একাধিক সংস্করণ বা বিভিন্ন নির্ভরতা সহ একই সংস্করণ দ্বন্দ্ব ছাড়াই পাশাপাশি থাকতে পারে। নিক্স একটি "বাইনারি ক্যাশে" সার্ভারে কাঙ্ক্ষিত হ্যাশ সন্ধান করতে পারে, সেই নির্দিষ্ট নির্ভরতার সাথে সেই নির্দিষ্ট প্যাকেজটি ইতিমধ্যে নির্মিত হয়েছে কিনা তা দেখতে; যদি তা হয় তবে এটি সংকলনের চেয়ে বিল্ড পণ্যটি ডাউনলোড করবে।

বর্তমানে, নিক্সপেকস সংগ্রহস্থলটিতে বেশিরভাগ / হ্যাকেজ, বেশ কয়েকটি জিএইচসি সংস্করণ (7.10.1, 7.8.4 এবং কিছু জেএস ব্যাকএন্ড) এবং একটি cabal2nixইউটিলিটি রয়েছে যা .cabal ফাইলগুলি থেকে নিক্স প্যাকেজ উত্পন্ন করার জন্য বেশ ভাল কাজ করে। এছাড়াও নিক্স-ভিত্তিক "হাইড্রা" সিআই সার্ভার রয়েছে, যা আপনি এসসিএম কমিটের উপর ভিত্তি করে বিল্ডগুলি ট্রিগার করতে ব্যবহার করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.