എൽ.എൽ.വി.എം (LLVM) എന്നത് ഒരു കംപൈലർ, ടൂൾചെയ്ൻ സാങ്കേതികവിദ്യയാണ്. ഇത് ഏത് പ്രോഗ്രാമിംഗ് ഭാഷയ്‌ക്കും ഫ്രണ്ട്‌എൻഡ് വികസിപ്പിക്കാൻ വേണ്ടി, ഏത് ഇൻസ്ട്രക്ഷൻ സെറ്റ് ആർക്കിടെക്ചറിനും ബാക്ക്‌എൻഡ് രൂപപ്പെടുത്താൻ ഉപയോഗിക്കാം. അതിന്റെ സവിശേഷതകൾ മൂലം മറ്റ് പ്രോഗ്രാമിംഗ് ഭാഷകളും, പ്ലാറ്റ്‌ഫോമുകളും കൈകാര്യം ചെയ്യാൻ കഴിയും[4]. എൽ.എൽ.വി.എം ഒരു ലാങ്വേജ് ഇൻഡിപ്പെൻഡന്റ് ഇന്റർമീഡിയേറ്റ് റെപ്രസെന്റേഷൻ (ലാങ്വേജ് ഇൻഡിപ്പെൻഡന്റ് ഇന്റർമീഡിയേറ്റ് റെപ്രസെന്റേഷൻ (IR) എല്ലാത്തരം പ്രോഗ്രാമിംഗ് ഭാഷകളും ഉപയോഗിച്ച് പ്രവർത്തിക്കാൻ സാധിക്കുന്ന ഒരു പൊതുവായ കോഡാണ്. ഇത് ഒരു ഭാഷയിൽ എഴുതിയ കോഡിനെ മറ്റൊരു രീതിയിലേക്ക് മാറ്റാൻ സഹായിക്കുന്നു.) കേന്ദ്രീകരിച്ചാണ് രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്. ഇത് ഒരു പൊതു അസംബ്ലി ഭാഷയായി പ്രവർത്തിക്കുന്നു, പല ഘട്ടങ്ങളിലായി ഓപ്റ്റിമൈസ് ചെയ്യാൻ കഴിയും. ഇതിലൂടെ കോഡ് എളുപ്പത്തിൽ തിരുത്താനും മറ്റു പ്ലാറ്റ്‌ഫോമുകളിൽ ഉപയോഗിക്കാനുമാകും[5]. എൽ.എൽ.വി.എമ്മിനെ ആദ്യം ലോ ലെവൽ വിർച്വൽ മെഷീൻ എന്ന് വിളിച്ചിരുന്നു. പ്രാരംഭ ഘട്ടത്തിൽ, ഇത് വിർച്വൽ മെഷീൻ സാങ്കേതികവിദ്യകളെ കേന്ദ്രീകരിച്ചായിരുന്നു വികസിപ്പിച്ചെടുത്തത്. എന്നാൽ, എൽ.എൽ.വി.എം ഒരു പ്രോജക്ടായും ഒരു കംപൈലർ, ടൂൾചെയിൻ സാങ്കേതികവിദ്യകളുടെ സമാഹാരവുമായി വളരുന്നതോടെ, ഈ പേര് പദ്ധതിയുടെ വിപുലമായ ലക്ഷ്യങ്ങൾ നിറവേറുന്നതിലേക്കായി മാറി. ഇതോടെ ഒരു ബ്രാൻഡ് പേരായി മാത്രമാണ് എൽ.എൽ.വി.എം ഉപയോഗിക്കുന്നത്.

എൽ.എൽ.വി.എം
Original author(s)Chris Lattner, Vikram Adve
വികസിപ്പിച്ചത്LLVM Developer Group
ആദ്യപതിപ്പ്2003; 21 വർഷങ്ങൾ മുമ്പ് (2003)
Stable release
19.1.6[1] Edit this on Wikidata / 17 ഡിസംബർ 2024
റെപോസിറ്ററി വിക്കിഡാറ്റയിൽ തിരുത്തുക
ഭാഷC++
ഓപ്പറേറ്റിങ് സിസ്റ്റംCross-platform
തരംCompiler
അനുമതിപത്രംApache License 2.0 with LLVM Exceptions (v9.0.0 or later)[2]
Legacy license:[3] UIUC (BSD-style)
വെബ്‌സൈറ്റ്www.llvm.org

എൽ.എൽ.വി.എം(ലോ ലെവൽ വെർച്വൽ മെഷിൻ) സി++-ൽ എഴുതിയ ഒരു ഫ്രെയിംവർക്കാണ്, ഇത് കംപൈൽ ടൈം, ലിങ്ക് ടൈം, റൺടൈം, ഐഡിൽ ടൈം ഒപ്റ്റിമൈസേഷൻ മുതലയാവ ചെയ്യാൻ വേണ്ടി രൂപകൽപ്പന ചെയ്തിരിക്കുന്നു. ആദ്യം ഇറങ്ങുന്ന സമയത്ത് സി, സി++ എന്നീ ഭാഷകൾക്കായി മാത്രമായിരുന്നു ഉപയോഗിച്ചത്, എന്നാൽ അതിന്റെ പ്രോഗ്രാമിംഗ് ഭാഷകൾക്കതീതമായ രൂപകൽപ്പന കാരണം, ആക്ഷൻസ്ക്രിപ്റ്റ്, അഡ, സി#, കോമൺ ലിസ്പ്, ക്രിസ്റ്റൽ, ക്യൂഡ[6][7][8], ഫോർട്രാൻ[9], ഹാസ്‌കെൽ, ജൂലിയ, കൊട്‌ലിൻ, റസ്റ്റ്[10], സ്വിഫ്റ്റ്, സിഗ്, .നെറ്റ്, ഡയലാൻ,സ്കാല[11][12], ജാവ ബൈറ്റ്കോഡ്, ലാബ്വ്യൂസ് ജി ലാങ്വേജ്(LabVIEW's G language)[13][14], ഒബജക്ടീവ്-സി, പോസ്റ്റ്ഗ്രേഎസ്ക്യൂഎൽ, സ്റ്റാൻഡേർഡ് എംഎൽ[15], സോജോ(Xojo), പിഎൽപിജിഎസ്ക്യൂഎൽ(PLpgSQL)[16], ഓപ്പൺസിഎൽ[17], ഫ്രീബേസിക്, ഫ്രീപാസ്കൽ, ഹലൈഡ്(Halide), ഇട്രിസ്(Idris)[18], ഡെൽഫി(Delphi)[19], ഫോർത്ത്(Forth)[20], റൂബി[21], പീക്കോലിസ്പ്(PicoLisp)[22], ഡി[23] പോലെയുള്ള നിരവധി പ്രോഗ്രാമിംഗ് ഭാഷകളുടെ കമ്പൈലറുകൾ എൽ.എൽ.വി.എമ്മിനെ പിന്തുണയ്ക്കുന്നു. ചില ഭാഷകൾ നേരിട്ട് എൽ.എൽ.വി.എം ഉപയോഗിക്കുമ്പോൾ, ചിലത് എൽ.എൽ.വി.എം ഇന്റർമീഡിയറ്റ് റെപ്രസെന്റേഷൻ രൂപത്തിൽ കോഡ് ജനറേറ്റ് ചെയ്യുന്നു. ഇതിലൂടെ, എൽ.എൽ.വി.എം പല ഭാഷകൾക്കും പ്ലാറ്റ്ഫോമുകൾക്കും ഒരുമിച്ച് പ്രവർത്തിക്കാൻ സഹായിക്കുന്ന ശക്തമായ ഉപകരണമാണ്.

ചരിത്രം

തിരുത്തുക

എൽ.എൽ.വി.എം പ്രോജക്റ്റ് 2000-ൽ യൂണിവേഴ്സിറ്റി ഓഫ് ഇലിനോയിസ് ആറ്റ് ഉർബാന-ചാമ്പെയ്നിൽ വിക്രം അദ്വേയും ക്രിസ് ലാറ്റ്നറും നേതൃത്വത്തിൽ ആരംഭിച്ചു. ഇത് സ്റ്റാറ്റിക്, ഡൈനാമിക് പ്രോഗ്രാമിംഗ് ഭാഷകൾക്കായുള്ള ഡൈനാമിക് കോമ്പൈലേഷൻ(ഡൈനാമിക് കോമ്പൈലേഷൻ പ്രോഗ്രാമുകൾ പ്രവർത്തിക്കുന്ന സമയത്ത് (runtime) കോഡ് നിർമിച്ച് പ്രവർത്തിപ്പിക്കുന്ന പ്രക്രിയയാണ്. ഇത് പ്രോഗ്രാമുകളുടെ വേഗതയും കാര്യക്ഷമതയും മെച്ചപ്പെടുത്താൻ സഹായിക്കുന്നു.) സാങ്കേതികവിദ്യകൾക്കായി ഗവേഷണം നടത്താനുള്ള ഒരു അടിസ്ഥാനമായി വികസിപ്പിക്കപ്പെട്ടു. ഈ പ്രോജക്റ്റ് തുടക്കത്തിൽ ഗവേഷണ ആവശ്യങ്ങൾക്ക് പ്രത്യേകമായി രൂപകൽപ്പന ചെയ്തതായിരുന്നു. എൽ.എൽ.വി.എം ഒരു സോഫ്റ്റ്വെയർ ടൂൾ ആണ്, കോഡുകൾ എളുപ്പമാക്കാൻ സഹായിക്കുന്നു. 2005-ൽ ആപ്പിൾ ഇത് ഉപയോഗിക്കാൻ തുടങ്ങി, ലാറ്റ്നറിനെ അത് വികസിപ്പിക്കുന്നതിനായി ക്ഷണിച്ചു. അങ്ങനെ ആപ്പിളിന്റെ സോഫ്റ്റ്വെയറുകൾക്ക് ഇത് കൂടുതൽ ഉപകാരപ്രദമായി മാറി[24]. എൽ.എൽ.വി.എം 2011 മുതൽ ആപ്പിളിന്റെ എക്സ് കോഡ് സോഫ്റ്റ്വെയർ ടൂളിന്റെ ഭാഗമായിട്ടുണ്ട്. എക്സ് കോഡ്(Xcode) മാക്ഒഎസിനും ഐഒഎസിനും വേണ്ടി സോഫ്റ്റ്വെയർ നിർമ്മിക്കാൻ ഉപയോഗിക്കുന്നു. എൽ.എൽ.വി.എം ഉപയോഗപ്പെടുത്തിക്കൊണ്ട്, പ്രോഗ്രാമുകൾ വേഗത്തിൽ നിർമ്മിക്കാൻ സഹായിക്കുന്നു[25]. എൽ.എൽ.വി.എം യൂണിവേഴ്സിറ്റി ഓഫ് ഇലിനോയിസ്/എൻസിഎസിഎ ഓപ്പൺ സോഴ്‌സ് ലൈസൻസ് പ്രകാരം പുറത്തിറക്കിയതാണ്. ഇത് സൗജന്യമായും പരിമിതികളില്ലാതെ ഉപയോഗിക്കാവുന്ന ഒരു ഓപ്പൺ സോഴ്‌സ് ലൈസൻസാണ്.

2006-ൽ, ലാറ്റ്നർ ക്ലാങ് എന്ന പുതിയ പ്രോജക്റ്റ് ആരംഭിച്ചു. ക്ലാങ് ഫ്രണ്ട്എൻഡും എൽ.എൽ.വി.എം ബാക്ക്എൻഡും ചേർന്ന ഈ പ്രോജക്ടിനെ ക്ലാങ്/എൽ.എൽ.വി.എം അല്ലെങ്കിൽ ക്ലാങ് എന്ന് വിളിക്കുന്നു.

എൽ.എൽ.വി.എം എന്നത് തുടക്കത്തിൽ ലോ ലെവൽ വെർച്ചൽ മെഷീൻ എന്ന് വിളിക്കപ്പെട്ടു. എന്നാൽ പ്രോജക്റ്റ് വളർന്നതോടെ, ഇത് വെർച്വൽ മെഷീനുമായി നേരിട്ട് ബന്ധമില്ലാത്ത, പല ഉപരിതലങ്ങളിലായി പ്രവർത്തിക്കുന്ന ഒരു വലിയ സാങ്കേതിക സംരംഭമായി മാറി. ആദ്യചുരുക്കപ്പേരായ എൽ.എൽ.വി.എം "തെറ്റിദ്ധാരണയുണ്ടാക്കുകയും" "അയോജ്യമായതല്ല" എന്നു തോന്നിക്കുകയും ചെയ്തു. അതിനാൽ, 2011 മുതൽ എൽ.എൽ.വി.എം ഒരു ആക്രോനിം[26] (acronym-ആക്രോനിം എന്ന് പറയുന്നത് പല വാക്കുകളുടെ ആദ്യാക്ഷരങ്ങൾ ചേർത്ത് ഒരു ചുരുക്കനാമം രൂപീകരിക്കുന്നതിനെയാണ് ഉദാഹരണത്തിന്, NASA (National Aeronautics and Space Administration) ഒരു ആക്രോനിം ആണ്.) അല്ലെന്ന് ഔദ്യോഗികമായി പ്രഖ്യാപിച്ചു. ഇപ്പോൾ, ഇത് എൽ.എൽ.വി.എം പദ്ധതിയെ പ്രതിനിധീകരിക്കുന്ന ഒരു ബ്രാൻഡായി മാത്രം ഉപയോഗിക്കുന്നു[27]. ഈ പ്രോജക്റ്റ് എൽ.എൽ.വി.എമ്മിന്റെ പ്രാഥമിക ഭാഗങ്ങളായ ഹൈ പെർഫോമൻസ് കോഡ്, ഡിബഗ്ഗിംഗ് ഉപകരണം, സി++ പ്രോഗ്രാമിംഗിനായി സജ്ജമാക്കിയ സ്റ്റാൻഡേർഡ് ലൈബ്രറി(C++11, C++14 സപോർട്ട് ഉൾപ്പെടെ[28]) തുടങ്ങിയവ ഉൾപ്പെടുന്നു. എൽ.എൽ.വി.എം ഫൗണ്ടേഷൻ ആണ് ഈ പ്രോജക്റ്റ് നിയന്ത്രിക്കുന്നത്. എൽ.എൽ.വി.എം ഫൗണ്ടേഷനാണ് എൽ.എൽ.വി.എം പ്രോജക്റ്റ് നിയന്ത്രിക്കുന്നത്. 2014-ൽ കമ്പൈലർ എഞ്ചിനീയർ ടാന്യ ലാറ്റ്നർ അതിന്റെ പ്രസിഡന്റായി ചുമതല വഹിച്ചു[29], 2024 മാർച്ച് മാസം വരെ അവർ ഈ പദവിയിൽ ഉണ്ടായിരുന്നു[30].

എൽ.എൽ.വി.എം രൂപകൽപ്പനയും നടപ്പാക്കലും നടത്തിയതിന്, 2012-ൽ അസോസിയേഷൻ ഫോർ കമ്പ്യൂട്ടിംഗ് മെഷിനറി (ACM) വിക്രം എഡ്‌വെ, ക്രിസ് ലോട്ടൺ, ചെങ് എന്നിവരെ എസിഎം സോഫ്റ്റ്‌വെയർ സിസ്റ്റം അവാർഡ് നൽകി ആദരിച്ചു. എൽ.എൽ.വി.എം ഒരു ശക്തമായ പ്രോഗ്രാമിംഗ് ഫ്രെയിംവർക്കാണ്, അത് കോൺപൈലേഷനെയും(കോൺപൈലേഷൻ എന്നത് പ്രോഗ്രാമിംഗ് ഭാഷയിൽ എഴുതിയ കോഡ് മെഷീൻ ഭാഷയിലേക്കോ ബൈറ്റ് കോഡിലേക്കോ മാറ്റുന്ന പ്രക്രിയയാണ്. ഇത് പ്രോഗ്രാമുകൾ കമ്പ്യൂട്ടറിൽ പ്രവർത്തിപ്പിക്കാൻ സഹായിക്കുന്നു.) കോഡ് ഓപ്റ്റിമൈസേഷനെയും സഹായിക്കുന്നു. ഈ പുരസ്‌കാരം സോഫ്റ്റ്‌വെയർ സിസ്റ്റങ്ങൾ വികസിപ്പിക്കുന്നതിൽ ചെയ്ത ഉന്നത സംഭാവനകളെ അംഗീകരിക്കാനാണ് നൽകുന്നത്[31].

  1. "LLVM 19.1.6 Released!" (in ഇംഗ്ലീഷ്). 17 ഡിസംബർ 2024. Retrieved 18 ഡിസംബർ 2024.
  2. "LICENSE.TXT". llvm.org. Retrieved 2019-09-24.
  3. "LLVM Developer Policy — LLVM 20.0.0git documentation". llvm.org. Retrieved 2024-11-09.
  4. "The LLVM Compiler Infrastructure Project". Retrieved March 11, 2016.
  5. "LLVM Language Reference Manual". Retrieved June 9, 2019.
  6. "Announcing LLILC - A new LLVM-based Compiler for .NET". dotnetfoundation.org. Archived from the original on December 12, 2021. Retrieved 2020-09-12.
  7. "Mono LLVM". Retrieved March 10, 2013.
  8. Lattner, Chris (2011). "LLVM". In Brown, Amy; Wilson, Greg (eds.). The Architecture of Open Source Applications.
  9. "The Flang Compiler". LLVM Project. Retrieved 2 December 2024.
  10. "Code Generation - Guide to Rustc Development". rust-lang.org. Retrieved 2023-01-04.
  11. Reedy, Geoff (September 24, 2012). "Compiling Scala to LLVM". St. Louis, Missouri, United States. Retrieved February 19, 2013.
  12. "Scala Native". Retrieved 26 November 2023.
  13. William Wong (May 23, 2017). "What's the Difference Between LabVIEW 2017 and LabVIEW NXG?". Electronic Design.
  14. "NI LabVIEW Compiler: Under the Hood".
  15. "LLVMCodegen". MLton. Retrieved 26 November 2024.
  16. "32.1. What is JIT compilation?". PostgreSQL Documentation (in ഇംഗ്ലീഷ്). 2020-11-12. Retrieved 2021-01-25.
  17. Larabel, Michael (11 April 2018). "Khronos Officially Announces Its LLVM/SPIR-V Translator". Phoronix.com.
  18. "Rapid". Rapid (in ബ്രിട്ടീഷ് ഇംഗ്ലീഷ്). Retrieved 2024-11-22.
  19. "LLVM-based Delphi Compilers". Embarcadero. Retrieved 26 November 2024.
  20. "MovForth". GitHub. November 28, 2021.
  21. "Features". RubyMotion. Scratchwork Development LLC. Retrieved June 17, 2017. RubyMotion transforms the Ruby source code of your project into ... machine code using a[n] ... ahead-of-time (AOT) compiler, based on LLVM.
  22. "Clasp". Clasp Developers. Retrieved 2 December 2024.
  23. "LDC". D Wiki. Retrieved 2 December 2024.
  24. Adam Treat (February 19, 2005), mkspecs and patches for എൽ.എൽ.വി.എം compile of Qt4, archived from the original on October 4, 2011, retrieved January 27, 2012
  25. "Developer Tools Overview". Apple Developer. Apple. Archived from the original on April 23, 2011.
  26. Lattner, Chris (December 21, 2011). "The name of LLVM". mailing list. 'LLVM' is officially no longer an acronym. The acronym it once expanded too was confusing, and inappropriate almost from day 1. :) As LLVM has grown to encompass other subprojects, it became even less useful and meaningless.
  27. Lattner, Chris (1 June 2011). "LLVM". In Brown, Amy; Wilson, Greg (eds.). The architecture of open source applications. Lulu.com. ISBN 978-1257638017. The name 'LLVM' was once an acronym, but is now just a brand for the umbrella project.
  28. ""libc++" C++ Standard Library".
  29. Lattner, Chris (April 3, 2014). "The LLVM Foundation". LLVM Project Blog.
  30. "Board of Directors". LLVM Foundation. Retrieved 19 March 2024.
  31. "ACM Software System Award". ACM.
"https://ml.wikipedia.org/w/index.php?title=എൽ.എൽ.വി.എം.&oldid=4286659" എന്ന താളിൽനിന്ന് ശേഖരിച്ചത്