Dimittis Rust 1.59 programmandi linguam cum auxilio conventus adiicit

Consilium programmandi generalis-propositum linguae Rust 1.59, fundatum a Mozilla inceptum, nunc sub auspiciis instituendi Rust Foundation independens non lucrum, dimissum est. Lingua ad salutem memoriae intendit et medium praebet ut ad summum officium parallelismum perveniatur, vitato purgamentorum collectoris et runtime usui (runtime ad initializationem fundamentalem et sustentationem bibliothecae vexillum redacta est).

Rubiginis methodos memoria tractandi praeter elit ab erroribus, cum argumentis abusionibus defendunt et contra difficultates oriuntur, ob memoriam humili gradu tractantem, ut accessu memoriae area postquam liberata est, dereferencing nullis indicibus, quiddam eliminatum, etc. Bibliothecas distribuere, aedifices praebere et clientelas administrare, consilium sarcina oneraria onerariarum enucleat. Crates.io repositorium ad bibliothecas hospites sustentatur.

Memoria salutis in Rubigo tempore compilationis providetur, per respectum inhibitionem, semita obiecti possessionis custodiens, semita obiecti vitarum (scoporum), et rectitudo memoriae accessum perpendens in codice executioni. Rubigo etiam tutelam praebet contra integris scaenicis, amet initializationem valorum variabilium ante usum requirit, errores meliores in bibliotheca norma tractat, notionem immutabilium indiciorum et variabilium per defaltam applicat, validas typings stabilis praebet ad errores logicos extenuendos.

Innovationes principales:

  • Fieri potest ut lingua conventus inseratur, quae in applicationibus exiguntur quae ad supplicium moderandum in humili gradu indigeant vel instructionibus specialioribus machinae uti possint. Conventus adiiciunt uti macros "asm!" et "global_asmum!" syntaxin formatting chorda adhibita pro nominandis tabulis similibus ad substitutiones in Rust chordarum adhibitis. Compilator instructiones conventus sustinet pro x86, x86-64, ARM, AArch64 et RISC-V architecturae. Insertion example: use std::arch::asm; // Multiplica x per 6 per vices et addit x mut x: u64 = 4; non tutum { asm!( "mov {tmp}, {x}", "shl {tmp}, 1", "shl {x}, 2", "add {x}, {tmp}", x = inout(reg ) x, tmp = out(reg) _, ); } assert_eq!(x, 4 * 6);
  • Auxilia addita pro destinationibus destructis (parallelis) in quibus nonnullae notae, crustae vel structurae in sinistro locutionis latere specificantur. Verbi gratia: sit (a, b, c, d, e); (a, b) = (1, 2); [c, d, _] = [1, 2, 3, 4, 5]. Struct { e, .. } = Struct { e: 5, f: 3 }; assert_eq!([1, 2, 1, 4, 5], [a, b, c, d, e];
  • Potest denotare valorem default pro generica const: strue ArrayStorage { arr: [T; N], } impl ArrayStorage { n new(a: T, b: T) -> ArrayStorage { ArrayStorage { arr: [a, b], } } }
  • Procurator sarcinae onerariae admonet de usu structurarum invalidarum in clientela, quae ex erroribus in compilator processit (exempli gratia, ob errorem, agros structurarum refertarum in tuto caudices mutuari permisit). Haec constructio in futuro Rust versioni non amplius sustinebitur.
  • Merces et ruste aedificata habent facultatem generandi documenta exsecutabilia nudata debugging notitia (spolia = "debuginfo") et symbola (spolia = "symbola"), sine necessitate vocandi utilitatem separatam. Purgatio occasus perficiatur per parametrum in Cargo.toml: [profile.release] habena = "debuginfo", "symbola"
  • Incrementalis compilatio per defaltam debilitata est. Ratio dicitur esse temporalis laborantis pro cimex in compilator, qui ducit ad errores ac ruinas deserialization. Cimex figere iam paratum est et in altera emissione comprehendetur. Ut ad compilationem incrementalem redeas, ambitus variabilis RUSTC_FORCE_INCREMENTAL=1 uti potes.
  • Nova portio API in categoriis stabilis mota est, additis methodis et notarum exsecutionibus confirmatae sunt:
    • std :: sequela :: available_parallelism
    • Consequuntur:: copied
    • Consequuntur :: cloned
    • arcus ::asm!
    • arcus :: global_asm!
    • Opis :: ControlFlow :: is_break
    • Opis :: ControlFlow :: is_continue
    • TryFrom u8 *
    • char :: TryFromCharError (Clone, Debug, Display, PartialEq, Exemplar, Eq, Error)
    • iter :: zip
    • NonZeroU8 :: is_power_of_two
    • NonZeroU16 :: is_power_of_two
    • NonZeroU32 :: is_power_of_two
    • NonZeroU64 :: is_power_of_two
    • NonZeroU128 :: is_power_of_two
    • DoubleEndedIterator ad structuram ToLowercase
    • DoubleEndedIterator ad structuram ToUppercase
    • TryFrom for [T; N]
    • UnwindSafe ad Postquam structuram
    • RefUnwindSafe quia olim
    • armv8 neon functiones sup- structae in compilator pro aarch64
  • attributum "const", quod determinat facultatem utendi in quovis contextu loco constantium, in functionibus adhibetur;
    • mem :: MaybeUninit :: as_ptr
    • mem :: MaybeUninit :: assume_init
    • mem :: MaybeUninit :: assume_init_ref
    • ffi :: CStr :: from_bytes_with_nul_unchecked

Source: opennet.ru