4 पॉइंट द्वारा GN⁺ 2024-12-09 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Mathics Core 7.0.0, Mathematica-संगत ओपन सोर्स कंप्यूटेशन सिस्टम के कोर इंजन को व्यवस्थित करता है और आगे built-in functions की lazy loading के लिए आधार तैयार करता है
  • नए built-in functions के रूप में ComplexExpand, ConjugateTranspose, LeviCivitaTensor आदि जोड़े गए हैं, जिनमें सूत्र, linear algebra और real-number determination से जुड़ी क्षमताएँ शामिल हैं
  • Range[], DirectedInfinity, Indeterminate, Graphics error display, $CharacterEncoding बदलाव आदि के जरिए मौजूदा compatibility की कमियाँ भरी गई हैं
  • built-in function loading अब implicit import dependency से हटकर import_and_load_builtins() को explicitly call करने के तरीके में बदल गया है
  • Python 3.11 और SymPy 1.12 support शामिल है, साथ ही Quantity, SparseArray, Derivative, Exit[], BaseForm से जुड़े fixes भी जोड़े गए हैं

रिलीज़ दिशा और आंतरिक पुनर्गठन

  • Mathics Core 7.0.0 में आगे built-in functions की lazy loading को support करने के लिए internal structure cleanup शामिल है
  • Python code और style को modernize किया गया है, type annotations बढ़ाए गए हैं, और कई spelling errors ठीक किए गए हैं
  • SymPy और Python dependencies को नए versions पर अपडेट किया गया है
  • initial loading speed बढ़ाने और शुरुआती memory usage कम करने के लिए भी काम किया गया है

नए built-in functions

  • इस रिलीज़ में जोड़े गए built-in functions ये हैं
    • $MaxLengthIntStringConversion
    • Elements
    • ComplexExpand
    • ConjugateTranspose
    • LeviCivitaTensor
    • RealAbs, RealSign
    • RealValuedNumberQ

दस्तावेज़ और टेस्ट जनरेशन में सुधार

  • PDF दस्तावेज़ों में formatting issues कई जगह ठीक की गई हैं
    • अध्याय और अनुभाग सूची में section number spacing बढ़ाई गई है
    • built-in function definitions के आसपास margins बढ़ाए गए हैं
    • पूरे दस्तावेज़ में spelling errors साफ किए गए हैं
  • doctest execution और LaTeX document generation code को revise और refactor किया गया है
    • built-in functions के incremental updates की अनुमति दी गई है
    • duplicate code कम करने की दिशा में साफ-सफाई की गई है
  • “Expression Structure” में Section Head-Related Operations अनुभाग नया जोड़ा गया है
  • PDF title को Mathics से Mathics3 में बदला गया है, और introduction text भी अपडेट किया गया है
  • पुराने format के non-exposed, non-educational doctests को pytest में बदला गया है

compatibility और user-visible behavior changes

  • *Plot evaluation के दौरान messages नहीं दिखाता
  • Range[] negative di को handle करता है
    • संबंधित PR: #951
  • DirectedInfinity और Indeterminate support में सुधार किया गया है
  • Graphics और Graphics3D, गलत primitive या directive शामिल होने पर गुलाबी background के साथ दिखते हैं
    • Mathics-Django interface में tooltip error message भी साथ दिखता है
  • $CharacterEncoding का मान session के भीतर बदला जा सकता है

internal implementation और API changes

  • Abs और Sign में eval_abs, eval_sign को अलग करके mathics.eval.arithmetic में जोड़ा गया है
  • strings में अनुमत maximum numeric digits की संख्या 7000 तय की गई है
    • pyston जैसे environments, जहाँ Python इसे अपने-आप adjust नहीं करता, वहाँ MATHICS_MAX_STR_DIGITS environment variable से इसे बदला जा सकता है
  • real-number comparison implementation को internal रूप से RealSign implementation में रखा गया है
  • Python 3.11 में $MaxLengthIntStringConversion, बड़े integers और strings के बीच literal conversion के maximum size को नियंत्रित करता है
  • built-in code loading implicit तरीके के बजाय explicit instruction तरीके में बदल गया है
    • यह आगे built-in functions की lazy loading या GNU Emacs autoload शैली के “autoload” को संभव बनाने के लिए किया गया बदलाव है
  • नए API में import_and_load_builtins() को explicitly call करना होगा
    • पहले import order के आधार पर built-in function loading का timing implicit और अनिश्चित था
  • mpmath में LRU cache जोड़ा गया है

Quantity·SparseArray आदि bug fixes

  • Definitions अब pickle के साथ compatible है
  • Quantity expressions के support में सुधार किया गया है
    • इसमें conversion, formatting और arithmetic operations शामिल हैं
  • Graphics और Graphics3D का Background option फिर से काम करता है
  • String शामिल expressions के लिए numeric comparison issue ठीक किया गया है
    • संबंधित issue: #797
  • Infinity शामिल Switch[] issue ठीक किया गया है
    • संबंधित issue: #956
  • SparseArray के लिए Outer[] issue ठीक किया गया है
    • संबंधित issue: #939
  • ArrayQ[] अब SparseArray को detect करता है
    • संबंधित PR: #947
  • BoxExpressionError exception को handle किया गया है
  • Derivative द्वारा True, False, List[] को evaluate करने का behavior ठीक किया गया है
  • Combinatorica package fixes शामिल हैं
  • काम न करने वाला Exit[] ठीक किया गया है
  • BaseForm को $OutputForms में शामिल किया गया है

पैकेज support versions

  • Python 3.11 supported है
  • SymPy 1.12 supported है

1 टिप्पणियां

 
GN⁺ 2024-12-09
Hacker News की राय
  • मैं इस प्रोजेक्ट को कई सालों से देख रहा हूँ और यह लगातार अच्छे से आगे बढ़ रहा है। अगर आपकी दिलचस्पी open source computer algebra system में है, तो GNU Octave या Maxima जैसे क्लासिक विकल्पों से लेकर SAGEmath, Symbolics.jl, sympy जैसे आधुनिक विकल्पों तक, कई ज़्यादा परिपक्व समाधान मौजूद हैं
    GiNaC जैसी symbolic computation लाइब्रेरी से लेकर SAGEmath जैसे batteries-included IDE तक इसका दायरा बड़ा है, और community भी सक्रिय है। उदाहरण के लिए, मेरे हिसाब से SAGEmath ने web notebook interface को लगभग pioneered किया था, जो आज Jupyter के अलग-अलग रूपों तक पहुँचा
    व्यक्तिगत रूप से मुझे Mathematica(MMA) का Lisp जैसा style पसंद है, लेकिन MMA को ताकतवर बनाने वाली चीज़ सिर्फ core नहीं, बल्कि इसकी विशाल library है। symbolic integration, 2D/3D graphics, finite element method जैसे बुनियादी विषयों में इसके पास industry-leading समाधान हैं, और bioinformatics जैसे कई specialized क्षेत्र भी हैं
    Mathics ने core की नकल अच्छी तरह की लगती है, लेकिन स्वाभाविक है कि वे सारी libraries इसमें नहीं हैं। Matlab और कई “toolkit” की तुलना numpy clone से करते समय भी यही तर्क लागू होता है, लेकिन Python flow अब Matlab में न चलने वाले बहुत सारे नए code को numpy world में ले आया है

    • progress वाली बात से सहमत हूँ। यह प्रोजेक्ट अपनी पसंद की चीज़ को चुपचाप और लगातार गहराई से करते रहने का बढ़िया उदाहरण लगता है
      करीब 5 साल पहले जब यह पहली बार आया था, तो मैंने सोचा था “symbolic evaluation engine तो सच में अच्छा बनाया है, अब देखते हैं आगे क्या होता है।” आगे जब भी नया project शुरू करने का मन होगा, तो पुराने project को लगातार refine करते रहने का यह उदाहरण याद रखना चाहिए
    • Lisp की तरफ़, Maxima से Common Lisp में आसानी से प्रवेश किया जा सकता है। performance के लिए SBCL इस्तेमाल करें तो और अच्छा है
    • हो सकता है मैं गलत समझ रहा हूँ, लेकिन Octave, Matlab, numpy को मैं computer algebra system वाली category में नहीं देखता। ये सभी numerical computation पर केंद्रित languages या libraries हैं, इसलिए exact symbolic expressions के बजाय problem के numerical solution निकालने के लिए इस्तेमाल होते हैं
      ये एक-दूसरे के पूरक हैं और अक्सर साथ में भी इस्तेमाल होते हैं। Mathematica और Mathics दोनों paradigms को support करते लगते हैं, लेकिन वे एक ही चीज़ नहीं हैं
  • sympy based लगता है: https://www.sympy.org/en/index.html

  • अगर आपको सिर्फ personal use चाहिए, तो Wolfram Cloud मुफ्त में इस्तेमाल किया जा सकता है। लगता है files करीब 30 दिन बाद delete हो जाती हैं। Wolfram Engine भी command line से Mathematica मुफ्त में इस्तेमाल करने का तरीका है। खैर, कुछ न होने से तो बेहतर है

    • Mathematica license वाला Raspberry Pi भी खरीद सकते हैं
    • Wolfram Engine के ऊपर WLJS रख दें, तो यह काफ़ी मज़ेदार तरीके से इस्तेमाल हो सकता है
  • Mathics का और सरल परिचय यहाँ है:
    https://mathics.org/

  • पता नहीं क्यों, लगता है यह SageMath में integrate हो जाएगा :D

    • SageMath में Mathics को शामिल करने की कोई वास्तविक हलचल मुझे पता नहीं है। अनुमान लगाऊँ तो शायद इसलिए कि SageMath मुख्यतः research mathematicians और cryptographers द्वारा develop किया जाता है, इसलिए components शामिल करते समय performance अक्सर मुख्य चिंता होती है
      SageMath सबसे बड़े Cython projects में से एक है, इसका एक कारण यह भी है कि Cython Sage में तेज़ C/C++ libraries का फायदा उठाने देता है
      Mathics फिलहाल performance को बहुत गंभीरता से लेता नहीं लगता। उदाहरण के लिए Mathics में "AbsoluteTiming[Sum[i, {i, 1, 100000}]]" जैसा छोटा microbenchmark चला कर देख सकते हैं, या roadmap पढ़ सकते हैं
      बेशक यह ठीक है। Mathematica programming language में कई दिलचस्प applications हैं जहाँ performance महत्वपूर्ण नहीं होती, जैसे किसी symbolic operation को expression के साथ सावधानी से step-by-step follow करना
      लेकिन Sage developers की मुख्य motivation cutting-edge research mathematics है, और वहाँ लगभग हमेशा performance बहुत महत्वपूर्ण होती है। Sage सिर्फ sympy का उपयोग न करके बहुत सारी समान functionality खुद implement करता है, इसकी वजह भी performance है। sympy installation में आसानी को प्राथमिकता देता है, इसलिए अपेक्षाकृत धीमा हो सकता है, जबकि SageMath में easy installation बिल्कुल priority नहीं है
      SageMath का mission Mathematica, Matlab, Magma, Maple का viable alternative बनना है, लेकिन इसका मतलब clone बनना नहीं था। उदाहरण के लिए इसका मतलब Mathematica code को सीधे चलाना नहीं, बल्कि उस research को open source math software पर support करने वाला alternative होना है जिसे वरना ऐसे closed-source programs से किया जाता
  • software engineers software cost न देने के लिए कुछ भी कर लेते हैं

    • मेरे पास Mathematica license है, लेकिन यह project भी काफ़ी बढ़िया लगता है। मैं भी software engineer हूँ। अगर Mathics developers Mathematica users न हों, तो मुझे उल्टा आश्चर्य होगा
    • बात कीमत की नहीं, freedom की है
    • कुछ लोग अपने लिए software बनाते हैं, और उसे open source तक कर देते हैं
    • पहले मैंने Debian Sarge के 3-DVD case और magazine-size handbook के लिए 20 डॉलर दिए थे
  • Mathematica Raspberry Pi पर मुफ़्त में उपलब्ध है[1], और ज़्यादातर विश्वविद्यालयों के पास पूरे site का license होता है। “Home & Hobby” license भी इतना महंगा नहीं है: subscription सालाना 195 डॉलर है, perpetual license 390 डॉलर है, और renewal सिर्फ़ 175 डॉलर है[2]
    सच कहूं तो अगर कोई tinkering में दिलचस्पी रखता है लेकिन वह कीमत नहीं चुका सकता, तो crack version ढूंढना या install करना भी मुश्किल नहीं है
    निजी तौर पर मुझे Mathematica, सटीक कहें तो “Wolfram Language”, काफ़ी पसंद है और hobby license के लिए पैसे देने में भी संतोष है। मुझे न सिर्फ़ लगता है कि इसकी कीमत वसूल है, बल्कि math software को support करना पैसे खर्च करने का एक “अच्छा कारण” भी मानता हूं
    इसके अलावा, amateur photographers अक्सर Adobe CC जैसे tools पर उतना खर्च कर देते हैं जितना कई programmers अपने सारे tools पर भी नहीं करते; मुझे समझ नहीं आता क्यों। कई subscription services पर महीने के 20–40 डॉलर से ज़्यादा खर्च करना, लेकिन 200–400 डॉलर के license fee पर हिचकना भी वैसा ही है
    हालांकि मेरे मामले में, कंप्यूटर पर install लगभग किसी भी program से ज़्यादा समय मैं Mathematica में बिताता हूं
    फिर भी open-source math software की अब भी एक महत्वपूर्ण जगह है। Mathematica आम तौर पर व्यापक है, लेकिन advanced math में अब भी बड़ी कमियां हैं
    खासकर ज़्यादा “niche” math क्षेत्रों को भी यह पूरा कर पाएगा, इस पर भरोसा करना कठिन होने के दो कारण हैं। पहला, जितना ज़्यादा advanced या obscure क्षेत्र होगा, return on investment उतनी ही तेज़ी से घटेगा। दूसरा, Wolfram Language में पहले से ही 6000 से ज़्यादा built-in functions हैं, इसलिए group theory जैसे क्षेत्रों को व्यापक रूप से support करने के लिए सैकड़ों और functions जोड़ना बहुत समझदारी भरा नहीं लगता
    इसे packages के ज़रिए support किया जा सकता है, लेकिन kernel में first-class support न मिलने से performance cost आती है, और users को जानबूझकर ढूंढकर इस्तेमाल करना पड़ता है, इसलिए usability cost भी होती है
    इसलिए GAP, M2, PARI/GP जैसे open-source software Wolfram Language की gaps भरने में महत्वपूर्ण भूमिका निभाते हैं। मेरे मामले में, जितना मैं Mathematica license पर खर्च करता हूं, उतना ही FOSS projects में भी contribute करता हूं। जिन projects में आर्थिक योगदान आसान नहीं होता, उनमें समय और skills लगाकर सुधार करने की कोशिश करता हूं
    सच कहूं तो Mathematica की functionality को clone करने की कोशिश करने वाले projects में मेरी ज़्यादा रुचि नहीं है। बेशक ऐसे projects भी develop और improve होते रहेंगे, और कम-से-कम Wolfram Research पर core functionality को लगातार बेहतर करने का दबाव तो डाल सकते हैं। लेकिन ऐसे project को आज के Mathematica/WL की बराबरी करने में शायद 10–20 साल लगेंगे
    [1]: https://www.wolfram.com/raspberry-pi/
    [2]: https://www.wolfram.com/mathematica/pricing/home-hobby/

    • Stephen Wolfram को HN पर काफ़ी नापसंद किया जाता लगता है, लेकिन experimental math, puzzle solving, quick data visualization वगैरह के लिए Wolfram एक गहरी और खूबसूरत language है
      integrated notebook, mouse-over documentation, और हैरानी की बात है कि हजारों functions वाला एक single विशाल namespace — ये सब somehow मिलकर एक ऐसा सरल और productive experience देते हैं, जैसा मैंने किसी और में नहीं देखा। जबकि आम तौर पर मैं “heavy” IDEs पसंद करने वालों में भी नहीं हूं
  • Mathematica में परेशान करने वाली बातों में से एक यह है कि सारे functions को उसी namespace में ठूंस दिया गया है, और अलग-अलग parameterization options के हिसाब से overloading नहीं है

    • overloading से आपका क्या मतलब है, समझ नहीं आया। Functions arguments की संख्या के हिसाब से आसानी से अलग behavior कर सकते हैं। जैसे 2-argument Fold और 3-argument Fold, और Graphics, Graphics3D, Solve, Import/Export की तरह options भी जितने चाहें रख सकते हैं
      याद आने वाला बड़ा duplication बस कई Plot functions के आसपास ही है