Scheme2Js জাভাস্ক্রিপ্ট কম্পাইলার একটি প্রকল্প. কিছু প্রচেষ্টা R5rs যতটা সম্ভব বন্ধ হচ্ছে ব্যয় করা হয়েছে, আমরা প্রধানত সক্ষমতার উপর কেন্দ্রীভূত.
সাধারণত Scheme2Js জাভাস্ক্রিপ্ট কোড উৎপন্ন, যে তুলনীয় কোড হাতে লেখা. এই কর্মক্ষমতা অর্জন করার জন্য, Scheme2Js সম্পূর্ণ R5rs অনুবর্তী নয়. বিশেষ করে এটা continuations, সঠিক সংখ্যার জন্য সমর্থন অভাব আছে এবং এটা শুধুমাত্র আংশিকভাবে লেঙ্গুড় recursion একইরূপে.
Scheme2Js ফলে পরিবর্তন করতে পারবেন বিভিন্ন পতাকা, উপলব্ধ করা হয়:
ย ท --no-JS-বিন্দু-স্বরলিপি ডট স্বরলিপি সঙ্গে দয়া করে জাভাস্ক্রিপ্ট ক্ষেত্র অ্যাক্সেস নামঞ্জুর করে. এই পতাকা document.getElementById মত ফর্ম XY এর ব্যবহারের নিষ্ক্রিয় করা হয়. এটা JS-ক্ষেত্র ফাংশন ব্যবহার করে একটি বৈধ অভিব্যক্তি অ্যাক্সেস করতে তবে এখনও সম্ভব.
ย ท --mutable-স্ট্রিং: ক্রম স্ট্রিং-অপারেশন কর্ম ক্ষমতায় উন্নতি করতে এবং প্রকল্প এবং দয়া করে জাভাস্ক্রিপ্ট কোড, দয়া করে জাভাস্ক্রিপ্ট স্ট্রিং ডিফল্ট বাস্তবায়ন মানচিত্র প্রকল্প স্ট্রিং মধ্যে ইন্টারফেস আরাম মধ্যে. প্রকল্প স্ট্রিং বিপরীত, দয়া করে জাভাস্ক্রিপ্ট স্ট্রিং তবে অপরিবর্তনীয়. চপল হয় প্রকল্প স্ট্রিং উপস্থাপন করে এমন একটি দয়া করে জাভাস্ক্রিপ্ট বর্গ, এই পতাকা মানচিত্র স্ট্রিং. ফলে কোড সামান্য ধীর হতে পারে, এবং এটা জাভাস্ক্রিপ্ট কোড দিয়ে ইন্টারফেস আরো কঠিন.
ย ท --encapsulate অংশ একটি বেনামী ফাংশন মধ্যে প্রোগ্রাম encapsulates. শুধু গ্লোবাল ভেরিয়েবল এই বেনামী ফাংশন বাইরে আছে. এক দিকে এই বেনামী ফাংশন এক ফাংশন কল প্রবর্তন করে. কিন্তু অন্য দিকে সবচেয়ে জাভাস্ক্রিপ্ট বাস্তবায়নের দ্রুত এই অপ্টিমাইজেশান সঙ্গে চালানো উচিত: সাধারণত hashtables দয়া করে জাভাস্ক্রিপ্ট মধ্যে সুযোগ প্রতিনিধিত্ব করতে ব্যবহৃত হয়. একটি বেনামী ফাংশন প্রোগ্রাম ব্যবহার করে ভেরিয়েবল (তত্ত্ব) এই ভেরিয়েবল ব্যবহারের খানি, যা তাদের নিজস্ব ছোট সূচিতে hashtable মধ্যে বিভক্ত করা হয়. আরো উল্লেখযোগ্য ভেরিয়েবল তাদের নিজস্ব সূচিতে hashtable সংরক্ষিত, এবং না বিশ্বব্যাপী পরিবর্তনশীল দ্বারা ব্যবহারযোগ্য যা গ্লোবাল সূচিতে hashtable, আছে. এটা পরোক্ষভাবে গ্লোবাল ভেরিয়েবল বিষয়বস্তু পরিবর্তন করতে অত্যন্ত সহজ. ইনলাইনিং বা অন্যান্য সাধারণ অপ্টিমাইজেশন গ্লোবাল ভেরিয়েবল উপর করতে অত: পর অসম্ভব. একটি বেনামী ফাংশন প্রোগ্রাম এর ভেরিয়েবল মজুত করে এই অপ্টিমাইজেশন আবার সম্ভব হয়ে.
ย ท --optimize-Var-সংখ্যা ফলে দয়া করে জাভাস্ক্রিপ্ট কোড ব্যবহৃত ভেরিয়েবল সংখ্যা হ্রাস করা হয়. কোড দ্রুত চালানোর জন্য, কিন্তু ভেরিয়েবলের নাম বিচ্ছিন্ন হয়ে যাবে এবং একই পরিবর্তনশীল বেশ কয়েকবার ব্যবহার হতে পারে, ডিবাগ আরো কঠিন হতে পারে.
ย ท --optimize সময়: এই পতাকা Scheme2Js যখন loops সাধারণ সেরা অনুকূল রূপ দেয় সঙ্গে. unoptimized loops গঠন প্রায়ই যখন:
যখন (সত্য) {
যদি (টেস্ট)
resVar = মাঝামাঝি;
অন্য {
modify_loop_variable;
অবিরত;
}
বিরতি;
}
এই অপ্টিমাইজেশান এইসব নিদর্শন জন্য দেখায় এবং যখন লুপ মধ্যে পরীক্ষা চলে আসে:
যখন (! টেস্ট) {
modify_loop_variable;
}
resVar = মাঝামাঝি;
এই অপ্টিমাইজেশান শুধুমাত্র সম্প্রতি বাস্তবায়িত হয়েছে এবং সেইজন্য এখনো ডিফল্টরূপে সক্রিয় করা হয় না.
ย ท --verbose কিছু তথ্য প্রদর্শন করা হয়.
ย ท --no-ইনলাইনিং সব ফাংশন ইনলাইনিং (ধ্রুবক এখনও inlined হতে পারে) নিষ্ক্রিয় করা হয়.
ย ท --inline-GLOBALS Scheme2Js ইনলাইন গ্লোবাল ফাংশন এবং ধ্রুবক দেয়. এই দুই অবাঞ্ছিত পার্শ্ব প্রতিক্রিয়া থাকতে পারে: এক জন্য, গ্লোবাল ভেরিয়েবল প্রায়ই বিভিন্ন মডিউল মধ্যে তথ্য স্থানান্তর ব্যবহার করা হয়. তাদের কোন রেফারেন্স আর সেখানে যদি কিছু inlined ফাংশন হারিয়ে যায়. গ্লোবাল ফাংশন একটি মডিউল বাইরে ব্যবহার করা হয়, এক এই পতাকা ব্যবহার করা উচিত নয়. (এই আচরণ Scheme2Js ভবিষ্যত সংস্করণে পরিবর্তন করা হতে পারে.)
ย ท --unresolved-is-জাতীয়: একটি পরিবর্তনশীল আনবাউন্ড যদি, কম্পাইলার পরিবর্তনশীল অন্য মডিউল থেকে আসে, অথবা দয়া করে জাভাস্ক্রিপ্ট থেকে অনুমান করা হবে. অনুচ্ছেদ প্রকল্প দেখুন - জাভাস্ক্রিপ্ট দয়া করে জাভাস্ক্রিপ্ট প্রকল্প ইন্টারফেস একটি আরো বিস্তারিত আলোচনার জন্য.
ย ท --js-এই প্রকল্প ফাংশন মধ্যে এই পরিবর্তনশীল উপলব্ধ করা হয়. এই পথ, প্রকল্প পদ্ধতি দয়া করে জাভাস্ক্রিপ্ট বস্তুর পদ্ধতি হিসেবে ব্যবহার করা যাবে.
ย ท --no-tailrec যখন লুপ অপ্টিমাইজেশান tailrec নিষ্ক্রিয় করা হয়. আপনি লেঙ্গুড়-recs অনুবাদ কম্পাইলার পথে একটি বাগ সন্দেহ করেন, আপনি এই পতাকা চেষ্টা করে দেখতে পারেন.
ย ท --no-অপ্টিমিজ-কল বাইনারি বা ইউনারী অপারেশন Scheme2Js ইনলাইনিং নিষ্ক্রিয় করা হয়. উদাহরণস্বরূপ sci_plus (3, 5) (3 +5) অপ্টিমাইজ করা হয়. এই অপ্টিমাইজেশান অত্যন্ত গুরুত্বপূর্ণ, এবং এটি নিষ্ক্রিয় করার কোনও কারণ সাধারণত আছে.
ย ท --no-অপ্টিমিজ-consts প্রাক ধ্রুব গণনা নিষ্ক্রিয় করা হয়. (এই পতাকা দিয়ে) প্রতিবন্ধী না, যৌগ ধ্রুবক precalculated হয় এবং তাদের দৃষ্টিগোচর ধ্রুবক অধিষ্ঠিত একটি পরিবর্তনশীল একটি রেফারেন্স দ্বারা প্রতিস্থাপিত. পুনরাবৃত্তি করে এই দ্রুত এই ধ্রুবক ব্যবহারের, কিন্তু নতুন ভেরিয়েবল প্রবর্তন করে.
ย ท --no-অপ্টিমিজ-boolify boolify অপ্টিমাইজেশান নিষ্ক্রিয় করা হয়. দয়া করে জাভাস্ক্রিপ্ট এবং প্রকল্প এর boolify সমতুল্য নয়: দয়া করে জাভাস্ক্রিপ্ট প্রকল্প শুধুমাত্র #f আছে, যেহেতু, মিথ্যা হতে, 0, মিথ্যা নাল এবং অনির্ধারিত বিবেচনা করে. unoptimized boolify তাই সবসময় মিথ্যা বিপক্ষে টেস্ট বলেছেন: যদি (পরীক্ষা == মিথ্যা!) ... Scheme2Js দেখতে পারেন, পরীক্ষা নিজেই একটি বুলিয়ান যে, এটা অপ্রয়োজনীয় অপসারণ করতে পারেন == মিথ্যা পরীক্ষা. এই পতাকা এই অপ্টিমাইজেশান নিষ্ক্রিয় করা হয়.
ย ท --d ধাপে ধাপে পর্যায়ে পরে এবং AST একটি বিন্দু-ফাইল (দেখতে Graphviz) ছাপে. সম্ভাব্য ধাপ রয়েছে: যখন, (TT "বিবৃতি"), নোড-elim3, গাছ, প্রতীক, নোড-elim1, লেঙ্গুড়, ইনলাইন, ধ্রুব-প্রসারণ, RM-অব্যবহৃত-Vars, ক্যাপচার, নোড-elim2 প্রসারিত. সাধারণত এক যদি না ডিবাগ করার উদ্দেশ্যে, এই পতাকা দরকার হয় না.
ย ท --print-locs কপি করে প্রিন্ট দয়া করে জাভাস্ক্রিপ্ট ফাইল মন্তব্য হিসেবে মূল অবস্থানে. এই অবস্থানে বর্তমানে চরিত্র-অফসেট ফাইলের শুরুতে থেকে
এই রিলিজে নতুন কি:.
- ক্ষুদ্র পরিবর্তন এবং bugfixes Scheme2Js হপ থেকে বৈশিষ্ট্যসমূহ নিয়ে আসা হয়েছে.
- Scheme2Js 'রানটাইম পাঠক এখন কীওয়ার্ড স্বীকার করে লি >
<লি> বেশ কিছু বাগ সংশোধন করা হয়েছে. - কম্পাইলার অপ্টিমাইজ করা হয়েছে
- এই রিলিজ যোগ্যতাসম্পন্ন নাম সমর্থন করে.
সংস্করণ 20100816 নতুন কি:.
কি সংস্করণ 20081219 নতুন:.
<লি> এটি এখন অনেক দ্রুত এবং কম মেমরি হ্রাস.
<লি> অনেক বাগ সংশোধন করা হয়েছে.
<লি> Scheme2Js ডিফল্ট মডিউল দফা এখন Bigloo এক অনুরূপ.
পাওয়া মন্তব্যসমূহ না