Julia 1.9 ፕሮግራሚንግ ቋንቋ ይገኛል።

የጁሊያ 1.9 የፕሮግራም አወጣጥ ቋንቋ ታትሟል ፣ እንደ ከፍተኛ አፈፃፀም ፣ ለተለዋዋጭ ትየባ ድጋፍ እና ለትይዩ ፕሮግራሚንግ አብሮ የተሰሩ መሳሪያዎችን በማጣመር ታትሟል። የጁሊያ አገባብ ለ MATLAB ቅርብ ነው፣ የተወሰኑ ንጥረ ነገሮችን ከ Ruby እና Lisp በመዋስ። የሕብረቁምፊ ማጭበርበር ዘዴ ፐርልን የሚያስታውስ ነው። የፕሮጀክት ኮድ በ MIT ፈቃድ ስር ተሰራጭቷል።

የቋንቋው ዋና ባህሪያት፡-

  • ከፍተኛ አፈጻጸም፡ ከፕሮጀክቱ ዋና ግቦች አንዱ ከC ፕሮግራሞች ጋር ቅርበት ያለው አፈጻጸም ማሳካት ነው። የጁሊያ ማቀናበሪያ በኤልኤልቪኤም ፕሮጀክት ስራ ላይ የተመሰረተ እና ለብዙ ዒላማ መድረኮች ቀልጣፋ የሀገር በቀል ማሽን ኮድ ያመነጫል።
  • የተለያዩ የፕሮግራም አወቃቀሮችን ይደግፋል፣ ነገር-ተኮር እና ተግባራዊ ፕሮግራሚንግ አካላትን ጨምሮ። መደበኛው ቤተ-መጽሐፍት ከሌሎች ነገሮች በተጨማሪ ለተመሳሳይ I/O፣ የሂደት ቁጥጥር፣ ምዝግብ ማስታወሻ፣ መገለጫ እና የጥቅል አስተዳደር ተግባራትን ይሰጣል።
  • ተለዋዋጭ ትየባ፡ ቋንቋው ከስክሪፕት ፕሮግራም ቋንቋዎች ጋር ለሚመሳሰሉ ለተለዋዋጭ ዓይነቶች ግልጽ የሆነ ትርጉም አያስፈልገውም። በይነተገናኝ ሁነታ ይደገፋል;
  • ዓይነቶችን በግልፅ የመግለጽ አማራጭ ችሎታ;
  • ለቁጥር ስሌት፣ ለሳይንሳዊ ስሌት፣ ለማሽን መማር እና ለመረጃ እይታ ተስማሚ የሆነ አገባብ። ለብዙ አሃዛዊ የውሂብ አይነቶች እና ስሌቶች ትይዩ መሳሪያዎች ድጋፍ.
  • ያለ ተጨማሪ ንብርብሮች ከ C ቤተ-መጽሐፍት በቀጥታ ተግባራትን የመጥራት ችሎታ።

በጁሊያ 1.9 ውስጥ ዋና ለውጦች፡-

  • አዲስ ቋንቋ ባህሪያት
    • በሌላ ሞጁል ውስጥ "setproperty!(:: ሞዱል, :: ምልክት, x)" በመጠቀም እንዲሰጡ ይፍቀዱ.
    • በመጨረሻው ቦታ ላይ ያልሆኑ ብዙ ስራዎች ይፈቀዳሉ. ለምሳሌ “a, b…, c = 1, 2, 3, 4” የሚለው ሕብረቁምፊ እንደ “a = 1; ለ…, = 2, 3; ሐ = 4" ይህ የሚከናወነው በBase.split_rest በኩል ነው።
    • ነጠላ ቁምፊ ቀጥተኛ ቃላት አሁን ከሕብረቁምፊዎች ጋር ተመሳሳይ አገባብ ይደግፋሉ። እነዚያ። አገባቡ ልክ ያልሆኑ UTF-8 ቅደም ተከተሎችን ሊወክል ይችላል፣ በቻር አይነት በሚፈቀደው መሰረት።
    • ለዩኒኮድ 15 መግለጫ ተጨማሪ ድጋፍ።
    • የቱፕል እና የተሰየሙ የቁምፊ ቱፕል ጥምሮች አሁን እንደ አይነት መመዘኛዎች ሊያገለግሉ ይችላሉ።
    • አዲስ አብሮገነብ ተግባራት "getglobal(:: ሞዱል, :: ምልክት [, ትዕዛዝ])" እና "setglobal!(:: ሞዱል, :: ምልክት, x[, ቅደም ተከተል])" ለአለምአቀፍ ተለዋዋጮች ብቻ ለማንበብ እና ለመፃፍ። የአለምአቀፍ ተለዋዋጮችን ለማግኘት የጌት ግሎባል ዘዴ አሁን ከጌትፊልድ ዘዴ ተመራጭ መሆን አለበት።
  • የቋንቋ ለውጦች
    • በስሪት 1.7 ላይ የገባው "@invoke" ማክሮ አሁን ወደ ውጭ ተልኳል እና ለአገልግሎት ዝግጁ ነው። በተጨማሪም፣ ለ"x" ነጋሪ እሴት የተተወበት ሁኔታ ላይ አሁን ከ"ማንኛውም" ይልቅ "Core.Typeof(x)" ዘዴን ይጠቀማል። ክርክሮች በትክክል መሰራታቸውን ለማረጋገጥ ይህ አስፈላጊ ነው ።
    • በስሪት 1.7 ውስጥ የገባው የ"ኢንቮኬሌትስት" ተግባር እና "@invokelatest" ማክሮ ወደ ውጭ መላክ ነቅቷል።
  • የማጠናከሪያ/የአሂድ ጊዜ ማሻሻያዎች
    • ለመጀመሪያ ጊዜ የማስፈጸሚያ ጊዜ በከፍተኛ ሁኔታ ቀንሷል (TTFX - ለመጀመሪያ ጊዜ የማስፈጸሚያ ጊዜ)። አንድ ጥቅል አስቀድሞ ማጠናቀር አሁን በ"pkgimage" ውስጥ የቤተኛ ኮድ ያከማቻል፣ ይህ ማለት በቅድመ ማጠናቀር ሂደት የተፈጠረው ኮድ ጥቅሉ ከተጫነ በኋላ እንደገና ማጠናቀር አያስፈልገውም ማለት ነው። "-pkgimages=no" የሚለውን አማራጭ በመጠቀም የpkgimages ሁነታን መጠቀም ሊሰናከል ይችላል።
    • የታወቀው የኳድራቲክ ውስብስብነት የዓይነት ማመሳከሪያ ጉዳይ ተስተካክሏል፣ እና ድምዳሜ በአጠቃላይ አነስተኛ ማህደረ ትውስታን ይጠቀማል። አንዳንድ የጠርዙ ጉዳዮች በራስ ሰር የመነጩ ረጅም ተግባራት ያላቸው (እንደ ModelingToolkit.jl ከፊል ልዩነት እኩልታዎች እና ትልቅ የምክንያት ሞዴሎች) በጣም በፍጥነት ያጠናክራሉ።
    • ምንም እንኳን ኮንክሪት ዓይነት ከሌላቸው ክርክሮች ጋር የሚደረጉ ጥሪዎች አሁን ዩኒየን-ስፕሊቲንግ ለመወጋት ወይም ለስታቲክ መፍታት የተመቻቹ ሊሆኑ ይችላሉ፣ ምንም እንኳን ለመላክ ብዙ የተለያዩ አይነት እጩዎች ቢኖሩም። ይህ በተወሰኑ ሁኔታዎች ውስጥ የነገር ዓይነቶች ሙሉ በሙሉ በስታትስቲክስ ያልተፈቱ፣ "@nospecialize-d" የጥሪ ጣቢያዎችን በስታትስቲክስ በመፍታት እና እንደገና መሰብሰብን በማስቀረት አፈጻጸምን ያሻሽላል።
    • በመሠረታዊ ሞጁል ውስጥ ያሉ ሁሉም የ @pure macro አጠቃቀሞች በBase.@assume_effects ተተክተዋል።
    • ለመጥራት የሚደረጉ ጥሪዎች (f፣ invokesig፣ args...) በተለምዶ ለf(args...) ከሚጠቀሙት ያነሱ የተወሰኑ ዓይነቶች ጥቅሉ እንደገና እንዲጠናቀር አያደርጉም።
  • የትእዛዝ መስመር አማራጮች ለውጦች
    • በሊኑክስ እና ዊንዶውስ ላይ የ"--threads=auto" አማራጭ አሁን ያሉትን የአቀነባባሪዎች ብዛት በሲፒዩ ዝምድና ላይ በመመስረት ለማወቅ ይሞክራል፣ይህ ጭምብል በተለምዶ በHPC እና በደመና አከባቢዎች ውስጥ ተዘጋጅቷል።
    • የ"-math-mode=ፈጣን" መለኪያው ተሰናክሏል፣ በምትኩ የፍቺን ትርጉም በግልፅ የገለፀውን "@fastmath" ማክሮን ለመጠቀም ይመከራል።
    • የ"--ክር" አማራጩ አሁን በ"አውቶ |" ቅርጸት ነው። N[፣auto|M]”፣ M የሚፈጥሩትን በይነተገናኝ ክሮች ብዛት የሚያመለክትበት (በአሁኑ ጊዜ ራስ ማለት 1 ማለት ነው)።
    • የታከለ አማራጭ “—heap-size-hint=” ", ይህም ጣራውን ያዘጋጃል ከዚያ በኋላ ንቁ ቆሻሻ መሰብሰብ ይጀምራል. መጠኑ በባይት፣ ኪሎባይት (1000 ኪባ)፣ ሜጋባይት (300 ሜባ) ወይም ጊጋባይት (1,5 ጂቢ) ሊገለጽ ይችላል።
  • በባለብዙ ክር ንባብ ላይ ለውጦች
    • "Threads.@spawn" አሁን ከ ":default" ወይም ": interactive" እሴት ጋር የአማራጭ የመጀመሪያ ነጋሪ እሴት አለው። በይነተገናኝ ተግባር ዝቅተኛ ምላሽ መዘግየትን የሚፈልግ እና አጭር እንዲሆን ወይም በተደጋጋሚ እንዲሠራ ታስቦ የተዘጋጀ ነው። ጁሊያን ሲጀምሩ ከተገለጹ በይነተገናኝ ተግባራት በይነተገናኝ ክሮች ላይ ይሰራሉ።
    • ከጁሊያ ሩጫ ጊዜ (እንደ ሲ ወይም ጃቫ ያሉ) የሚሄዱ ክሮች አሁን "jl_adopt_thread" በመጠቀም የጁሊያ ኮድ ሊደውሉ ይችላሉ። የጁሊያ ኮድን በ"cfunction" ወይም በ"@ccallable" የመግቢያ ነጥብ ሲያስገቡ ይህ በራስ-ሰር ይከሰታል። በውጤቱም ፣ በአፈፃፀም ጊዜ የክሮች ብዛት አሁን ሊለወጥ ይችላል።
  • አዲስ የቤተ-መጽሐፍት ተግባራት
    • አዲስ ተግባር "Iterators.flatmap".
    • የተሰጠውን ሞጁል የጫነውን የጥቅል እትም ለማግኘት አዲስ ተግባር "pkgdir(m :: ሞዱል)"።
    • አዲስ ተግባር "መቀነስ(hcat, x :: ቬክተር{<:Vector})" ወደ ማንኛውም ልኬት የሚያጠቃልለው እና ማንኛውም ተደጋጋሚ ተደጋጋሚ ይፈቅዳል. የ"ቁልል(f፣ x)" ዘዴ "mapreduce(f, hcat, x)"ን ያጠቃለለ እና የበለጠ ቀልጣፋ ነው።
    • የተመደበው ማህደረ ትውስታን ለመተንተን አዲስ ማክሮ "@allocations" ከ "@allocated" ጋር ተመሳሳይነት ያለው, ከተመደበው ማህደረ ትውስታ አጠቃላይ መጠን ይልቅ የማህደረ ትውስታ ምደባዎችን ቁጥር ይመልሳል.
  • አዲስ የቤተ-መጽሐፍት ባህሪዎች
    • "RoundFromZero" አሁን ከ"BigFloat" ውጪ ለሆኑ አይነቶች ይሰራል።
    • "Dict" አሁን "መጠን!" በመጠቀም በእጅ መቀነስ ይቻላል.
    • "@time" ልክ ያልሆኑ ዘዴዎችን እንደገና በማጠናቀር ያሳለፈውን ጊዜ ለየብቻ ይገልጻል።
  • በመደበኛ ቤተ-መጽሐፍት ላይ የተደረጉ ለውጦች
    • ለዲክ እና ሌሎች እንደ ቁልፎች(:: ዲክት)፣ እሴቶች(:: ዲክት) እና አዘጋጅ ያሉ የመደጋገሚያ ዘዴዎች ውስጥ የተዛመደ ጉዳይ ተጠግኗል። መዝገበ ቃላቱን የሚያሻሽሉ ወይም የሚያዘጋጁ ድርጊቶች እስካልተገኙ ድረስ እነዚህ የመድገም ዘዴዎች ላልተወሰነ ቁጥር ያላቸው ክሮች በትይዩ በዲክት ወይም አዘጋጅ ላይ ሊጠሩ ይችላሉ።
    • ተሳቢ ተግባርን መቃወም "!f" አሁን ከማይታወቅ ተግባር ይልቅ "(!) ∘ f" የተዋሃደ ተግባር ይመልሳል።
    • የልኬት ቁራጭ ተግባራት አሁን በበርካታ ልኬቶች ላይ ይሰራሉ፡ "እያንዳንዱ ክፍል"፣ "እያንዳንዱ" እና "እያንዳንዱ ኮል" መላክ ይበልጥ ቀልጣፋ ዘዴዎችን ለማቅረብ የሚያስችል የ"Slices" ነገርን ይመልሳል።
    • የ"@kwdef" ማክሮን ወደ ይፋዊ ኤፒአይ ታክሏል።
    • በ"fld1" ውስጥ ካለው የአሠራር ቅደም ተከተል ጋር አንድ ችግር ተስተካክሏል።
    • መደርደር አሁን ሁልጊዜ የተረጋጋ ነው (QuickSort እንደገና ተዘጋጅቷል)።
    • "Base.splat" አሁን ወደ ውጭ ተልኳል። የመመለሻ ዋጋው ከማይታወቅ ተግባር ይልቅ "Base.Splat" አይነት ነው, ይህም በጥሩ ሁኔታ እንዲወጣ ያስችለዋል.
  • የጥቅል አስተዳዳሪ
    • "የጥቅል ቅጥያዎች"፡ በጁሊያ ክፍለ ጊዜ ውስጥ ከተጫኑ ሌሎች ጥቅሎች የኮድ ቅንጣቢ ለመጫን ድጋፍ። አፕሊኬሽኑ ከ "Requires.jl" ጥቅል ጋር ተመሳሳይ ነው፣ ነገር ግን ቅድመ-ማጠናቀር እና የቅንብሮች ተኳሃኝነት ይደገፋሉ።
  • መስመራዊ የአልጀብራ ቤተ መፃህፍት
    • ከኤለመን-ጥበባዊ ክፍፍል ጋር የመደናገር ስጋት በመኖሩ የ"a/b" እና "b\a" ዘዴዎችን በ scalar "a" እና vector "b" ተወግዷል፣ እነዚህም ከ"a * pinv(b)" ጋር እኩል ናቸው።
    • ወደ BLAS እና LAPACK መደወል አሁን "libblastrampoline (LBT)" ይጠቀማል። OpenBLAS በነባሪነት ቀርቧል፣ ነገር ግን የስርዓት ምስሉን ከሌሎች BLAS/LAPACK ቤተ-መጻሕፍት ጋር መገንባት አይደገፍም። በምትኩ፣ BLAS/LAPACKን በሌላ የቤተ-መጻሕፍት ስብስብ ለመተካት የኤልቢቲ ዘዴን መጠቀም ይመከራል።
    • "lu" አዲስ የማትሪክስ ሽክርክር ስልት ይደግፋል, "RowNonZero()", ይህም አዲስ የሂሳብ አይነቶች ጋር ለመጠቀም እና ስልጠና ዓላማዎች የመጀመሪያ ዜሮ ያልሆኑ የማዞሪያ ኤለመንት ይመርጣል.
    • " Normalize(x, p=2)" አሁን ማንኛውንም መደበኛ የቬክተር ቦታ "x" ይደግፋል፣ scalarsን ጨምሮ።
    • ነባሪ የBLAS ክሮች ቁጥር አሁን በARM ህንፃዎች ላይ ካለው የሲፒዩ ክሮች ብዛት እና ከሌሎች አርክቴክቸር ግማሹ የሲፒዩ ክሮች ብዛት ጋር እኩል ነው።
  • Printf: ለተሻለ ተነባቢነት በስህተት ለተቀረጹ ሕብረቁምፊዎች እንደገና የተሰሩ የስህተት መልዕክቶች።
  • መገለጫ፡ አዲስ ተግባር "Profile.take_heap_snapshot(ፋይል)"፣ በJSON ላይ የተመሰረተ ፋይልን የሚጽፈው በChrome የሚደገፍ የ".heapsnapshot" ቅርጸት ነው።
  • Random: randn እና randexp አሁን ለማንኛውም የአብስትራክት ፍሎት አይነት ራንድን ለሚገልፅ ይሰራሉ።
  • መልስ
    • የ"Alt-e" የቁልፍ ጥምርን በመጫን አሁን ያለውን ግቤት በአርታዒው ውስጥ ይከፍታል። ይዘቱ (ከተቀየረ) ከአርታዒው ሲወጡ ይፈጸማል።
    • በ REPL ውስጥ ያለው የአሁኑ ሞጁል አውድ መቀየር ይቻላል (ዋናው በነባሪ) "REPL.activate(:: ሞጁል)" የሚለውን ተግባር በመጠቀም ወይም ሞጁሉን በ REPL ውስጥ በማስገባት እና "Alt-m" የቁልፍ ጥምርን በመጫን.
    • ለእያንዳንዱ ግቤት እና ውፅዓት ቁጥሮችን የሚያትመው እና በውጤት ውስጥ የተመዘገቡ ውጤቶችን የሚያከማች የ"ቁጥር መጠየቂያ" ሁነታ "REPL.numbered_prompt!()" በመጠቀም ሊነቃ ይችላል።
    • የትር ማጠናቀቅ ቁልፍ ቃል ነጋሪ እሴቶችን ያሳያል።
  • SuiteSparse፡ ለ"SuiteSparse" ፈቺ የተወሰደ ኮድ ወደ "SparseArrays.jl"። ፈታሾች አሁን በ"SuiteSparse.jl" እንደገና ወደ ውጭ ተልከዋል።
  • SparseArrays
    • "SuiteSparse" ፈቺዎች አሁን እንደ "SparseArrays" ንዑስ ሞዱሎች ይገኛሉ።
    • UMFPACK እና CHOLMOD ክር መከላከያ ሁነታዎች አለምአቀፍ ተለዋዋጮችን በማስወገድ እና መቆለፊያዎችን በመጠቀም ተሻሽለዋል። ባለብዙ-ክር "ldiv!" UMFPACK ነገሮች አሁን በደህና ሊፈጸሙ ይችላሉ።
    • የሙከራ ተግባር "SparseArrays.allowscalar(:: ቡል)" የተንቆጠቆጡ ድርድሮች scalar ጠቋሚን እንዲያሰናክሉ ወይም እንዲያነቁ ይፈቅድልዎታል። ይህ ተግባር የተለመደ የአፈጻጸም ችግር ምንጭ የሆነውን "SparseMatrixCSC" ዕቃዎችን በዘፈቀደ scalar መረጃ ጠቋሚን ለመለየት የተነደፈ ነው።
  • ያልተሳካ ወይም ስህተት ሲከሰት የሙከራ ሩጫን ቀደም ብሎ የሚያቋርጥ ለሙከራ ስብስቦች አዲስ ያልተሳካ ሁኔታ። በ"@testset kwarg failfast=true" ወይም "JULIA_TEST_FAILFAST=true" ወደ ውጪ መላክ ወይም አዘጋጅ። ይህ አንዳንድ ጊዜ የስህተት መልዕክቶችን ለመቀበል በCI ሩጫዎች ውስጥ አስፈላጊ ነው።
  • ቀኖች፡ ባዶ ሕብረቁምፊዎች ልክ እንደ "DateTime", "Dates" ወይም "Times" እሴቶች በስህተት አልተተነተኑም እና በምትኩ "ArgumentError"ን በግንባታ ሰሪዎች ውስጥ ይጥሉ እና ሲተነተን "tryparse" ምንም አይመልስም።
  • ጥቅል ተሰራጭቷል።
    • የአካባቢያዊ ሰራተኛ ሂደቶችን (ለምሳሌ "addprocs (N :: Int)" በመጠቀም ወይም የትእዛዝ መስመር ባንዲራ "--procs=N" ሲጠቀሙ የጥቅል ውቅር (ገባሪ ፕሮጄክት፣ "LOAD_PATH"፣"DEPOT_PATH") አሁን ተሰራጭቷል።
    • "addprocs" ለሀገር ውስጥ ሰራተኛ ሂደቶች አሁን የአካባቢ ተለዋዋጮችን ወደ ሰራተኛ ሂደቶች ለማስተላለፍ "env" የሚባል ክርክር ይቀበላል።
  • ዩኒኮድ፡ "graphemes(s, m:n)" ንዑስ ሕብረቁምፊውን ከ mth ወደ nth graphemes በ"s" ይመልሳል።
  • የ DelimitedFiles ጥቅል ከስርዓት ቤተ-መጽሐፍቶች ተወግዷል እና አሁን ጥቅም ላይ እንዲውል በግልጽ መጫን ያለበት እንደ የተለየ ጥቅል ተሰራጭቷል።
  • ውጫዊ ጥገኛዎች
    • በሊኑክስ፣ የlibstdc++ ስርዓት ቤተ-መጽሐፍት ሥሪት በራስ-ሰር ይገኝና፣ አዲስ ከሆነ ይጫናል። የድሮው libstdc++ አብሮገነብ የመጫኛ ባህሪ፣ የስርዓት ስሪት ምንም ይሁን ምን፣ የአካባቢን ተለዋዋጭ "JULIA_PROBE_LIBSTDCXX=0" በማዘጋጀት ወደነበረበት ሊመለስ ይችላል።
    • በሊኑክስ ላይ የ"RUNPATH" ተለዋዋጭን መለየት ያልቻሉትን ቤተ-መጻሕፍት ሊሰብር ከሚችለው ከጁሊያ ሁለትዮሽ "RPATH" ተወግዷል።
    • የመሳሪያ ማሻሻያዎች፡- የ"MethodError" እና ዘዴዎች (ለምሳሌ "ዘዴዎች(my_func))" ውፅዓት አሁን ተቀርፆ እና ቀለም የተቀየሱት በተቆለለ ፈለግ ውስጥ ባሉ ዘዴዎች ውፅዓት መርህ መሰረት ነው።

    ምንጭ: opennet.ru

አስተያየት ያክሉ