• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    SPIRALIRust - Programovací jazyk
    AXTHEB
    AXTHEB --- ---
    XCHAOS: No však ano.
    XCHAOS
    XCHAOS --- ---
    AXTHEB: no na rootu zase tvrděj "pomocí AI" :-)
    AXTHEB
    AXTHEB --- ---
    XCHAOS: akorát teda ne Microsoft, ale jeden engineer z MS, a ne with rust, ale obecný tool na přepis kódu do jiných jazyků, jestli to chápu dobře.
    XCHAOS
    XCHAOS --- ---
    well, this escalated quickly...
    Microsoft to Replace All C/C++ Code With Rust by 2030 - Thurrott.com
    https://www.thurrott.com/dev/330980/microsoft-to-replace-all-c-c-code-with-rust-by-2030
    XCHAOS
    XCHAOS --- ---
    Rust v jádře již není experimentální - Root.cz
    https://www.root.cz/zpravicky/rust-v-jadre-jiz-neni-experimentalni/
    XCHAOS
    XCHAOS --- ---
    MARASAN: já tě crosspostnu do ANSI C :-)
    THEON
    THEON --- ---
    V tom je ještě zajímavý extism. Zkoušel jsem, ale v dobu kdy API bylo ještě hodně nestabilní, myslím že teď by to mohlo být lepší :)

    Extism - make all software programmable. Extend from within. | Extism - make all software programmable. Extend from within.
    https://extism.org/
    BONEFLUTE
    BONEFLUTE --- ---
    SPIKE411: to je moc pěkný článek.

    Já jsem ve svých projektech dokormidlovat k používání https://crates.io/crates/rune
    Ale o rquickjs jsem vlastně nevěděl a vypadá to použitelně.
    Také zmínka o cel_interpreter mi přijde moc užitečná.

    Díky.
    SPIKE411
    SPIKE411 --- ---
    Building a Plugin System for Rust: Native Libraries vs Scripting Language vs WebAssembly vs Rules Engine

    https://kerkour.com/rust-plugins
    SPIKE411
    SPIKE411 --- ---
    GitHub - nrposner/coding_club: A repo for my CCN Coding Club talk, 'Python, Rust, and You: Modern Py-Rust Interoperation'
    https://github.com/nrposner/coding_club
    SPIKE411
    SPIKE411 --- ---
    Rust turns 10: How a broken elevator changed software forever | ZDNET
    https://www.zdnet.com/article/rust-turns-10-how-a-broken-elevator-changed-software-forever/
    SPIRALI
    SPIRALI --- ---
    MARASAN: Musim se pochlubit ze jsem na te fotce:)
    MARASAN
    MARASAN --- ---
    Announcing Rust 1.87.0 and ten years of Rust! | Rust Blog
    https://blog.rust-lang.org/2025/05/15/Rust-1.87.0/
    VELDRANE
    VELDRANE --- ---
    RESURRECTION: jenze tohle neni vubec produkcni kod, ale prototyp ;) a navic prototyp na kterym si potrebuju (rychle) otestovat nektere koncepty. Bohuzel sem se zrovna "trefil" do casti, kde se me to nakopalo do kouli ale i to k tomu patri ;). Kazdopadne to ted funguje k me plne spokojenosti (dostanu se za korporatni proxy), dodelam k tomu dokumentaci, testy a ano zbavim se ostatnich unwrapu ;). Nicmene ten projektik je neco ce stylu: "ucime se Rust pro zabavu a pouceni".

    Btw kdyby se nekdo potreboval dostat z linuxu skrz korporatni proxy ktera potrebuje kerberos/ad autentizaci tooly ktery to neumej (a ze jich je), tak ten fcni nedomrlek je tady:

    GitHub - veldrane/krb5proxy: HTTP proxy with kerberos authentication similar to cntlm project
    https://github.com/veldrane/krb5proxy
    RESURRECTION
    RESURRECTION --- ---
    VELDRANE: Unwrapy v produkčním kódu se nedoporučují přesně z tohoto důvodu, není moc jasné z čeho to vyletělo,kde, proč... Lepší je aspoň expect, ale úplně nejlepší je "?" co ti to zpropaguje někam kde to zhandluješ pořádně (třeba v mainu, kde to vypíšeš s nějakým kontextem) nebo "if let" a zhandlovat na místě. A nebo záměrně ignorovat pomocí "let _ =". Všechno jasně čitelné z kódu s jasným záměrem. U unwrapu člověk neví co tím básník myslel (obvykle to indikuje, že se mu errory nechtělo řešit). Vlastně tě tento konkrétní problém donutil to na tom jednom místě udělat "pořádně". :-)
    VELDRANE
    VELDRANE --- ---
    LYCO: moc dik za odpoved.

    Problem byl nakonec uplne nekde jinde. Po prozkoumani strace vystupu a tcpdumpu se ukazalo, ze zminena hlaska je od shutdown syscallu, tedy az ve chvili kdy system/tokio se snazilo socket uzavrit. Protoze byl za unwrapem, task spadnul, nicmene v tomhle pripade je to "pry" normalni chovani shutdownu HALF-CLOSED connection. Stacilo tedy vyhodit unwrap() z toho copy_bidirectional, ignorovat error Kind::NotConnected a uz to fici. Ted to testuju a zatim to vypada, ze to chodi pekne.
    LYCO
    LYCO --- ---
    Jinak takhle od boku:
    - ta chybová hláška se vůbec netýká lifetimů, někde jsi zapomněl zavolat connect() nebo tak něco
    - když nejde nějaká hodnota klonovat, tak ji buď musíš uložit někam kde bude žít dost dlouho (tady asi na heap, v boxu) nebo si ji předávat. Co takhle ji uložit do enumu RequestState, do příslušných variant?
    - Async funkce je sama o sobě stavový stroj a tokio ti ho bude posouvat, potřebuješ vážně implementovat vlastní stavový stroj k tomu všemu? Nemohl bys napsat async funkci která si svůj stav uloží do lokálních proměnných a ten stavový stroj zapsat kódem (nejspíš jako sekvenci cyklů), a pak to jen předat tokiu jako task? Kompilátor pak za tebe vyřeší většinu problémů s lifetimy...
    LYCO
    LYCO --- ---
    VELDRANE: řekni nám ještě, který řádek je ten /root/Bitbucket/krb5proxy/src/proxy.rs:232:84 a co je zač on_upgrade a ctx (kde se vezmou, jaký mají lifetime...)
    VELDRANE
    VELDRANE --- ---
    jo jeste doplnim ze cele to pada na:

    thread 'tokio-runtime-worker' panicked at /root/Bitbucket/krb5proxy/src/proxy.rs:232:84:
    called `Result::unwrap()` on an `Err` value: Os { code: 107, kind: NotConnected, message: "Transport endpoint is not connected" }

    coz je radek v tom handleru:

    tokio::io::copy_bidirectional(&mut client_io, &mut proxy_stream).await.unwrap();
    Kliknutím sem můžete změnit nastavení reklam