Rust SDK v1
Vytvorte si vlastný adaptér v jazyku Rust
Vlastný adaptér môže určovať reprezentáciu riešenia, jeho hodnotenie, operátory aj celé lokálne hľadanie. Zdrojový projekt upravíte a zostavíte vo svojom vývojovom prostredí. Výsledný balík importujete do RoboPol Math (Beta) a používate ho s vlastnými dátami.
Hotové balíky môžete rovno importovať a vyskúšať. Rust a Node.js potrebujete až vtedy, keď chcete upravovať a zostavovať vlastný kód.
Upravte projekt a vytvorte importovateľný balík
- Rozbaľte zdrojový projekt. Otvorte
examples/qap/src/lib.rsaleboexamples/weighted-fit/src/lib.rsa upravte požadované operácie. SúborREADME.mdopisuje verejné rozhranie a limity. - Príkazy nižšie spustite v rozbalenom priečinku, ktorý obsahuje
Cargo.tomlapackage.mjs. Nainštalujú referenčný nástrojový reťazec, zostavia príklad QAP, overia ho na referenčných prípadoch a vytvoria jeho balík. - V aplikácii kliknite na Importovať adaptér alebo zadanie a vyberte výsledný
qap.adapter.json. Po kontrole balíka sa adaptér uloží do knižnice Moje adaptéry. - Skontrolujte vstupné dáta, kliknite na Overiť zadanie a potom na Vypočítať. Vo výsledku skontrolujte priradenie, hodnotu cieľa a overenie podmienok.
- Po zmene algoritmu modul znova zostavte a vytvorte balík s novým názvom súboru. Import zmeneného obsahu pri rovnakom identifikátore adaptéra vytvorí novú verziu definície. Skoršie výpočty si zachovajú svoju pôvodnú identitu modulu a balíka.
rustup toolchain install 1.93.0 --profile minimal
rustup target add wasm32-unknown-unknown --toolchain 1.93.0
cargo +1.93.0 build --release --target wasm32-unknown-unknown -p refined_custom_qap
cargo +1.93.0 run --locked --release -p refined_adapter_checker -- target/wasm32-unknown-unknown/release/refined_custom_qap.wasm examples/qap/fixtures.json
node package.mjs qap target/wasm32-unknown-unknown/release/refined_custom_qap.wasm qap.adapter.json
Ak výstupný súbor už existuje, zvoľte nový názov, napríklad qap-v2.adapter.json. Nástroj package.mjs existujúce súbory neprepisuje. Príklad najmenších štvorcov má vlastné príkazy uvedené v súbore README.md.
Aplikácia prijíma kompletný balík JSON obsahujúci zostavený modul Wasm a jeho opis. Samotný súbor .rs, .wasm ani archív zdrojového projektu nie je týmto importovateľným balíkom.
Overte vlastný adaptér pred importom
Zdrojový projekt obsahuje samostatný kontrolný nástroj checker/, referenčné prípady oboch príkladov a ich kontrakt v súbore checker/FIXTURES.md. Nástroj funguje vo vašom počítači bez servera RoboPol Math (Beta) a bez súkromného jadra. Prvým argumentom môže byť zostavený modul alebo celý balík, napríklad qap.adapter.json; druhým je súbor referenčných prípadov.
Referenčný súbor obsahuje očakávaný opis modulu description, zhodný s položkou descriptionContract v manifeste príkladu. Doplňte vlastné nezávisle prepočítané prípady pre hodnotenie, operátory a overenie. Celočíselné skóre typu i128 sa porovnáva presne, konečné hodnoty typu f64 podľa zadanej tolerancie. Súbory prípadov majte pod vlastnou kontrolou; nástroj z nich negeneruje kód.
Výstupom je protokol JSON o skutočne vykonaných kontrolách. Pri chybe sa proces skončí nenulovým návratovým kódom. Protokol uvádza coreUsed:false: ide o kontrolu správania modulu, nie o výpočet pomocou Refined alebo dôkaz optima. Import a skutočný výpočet v aplikácii sú ďalšie kroky.
Modul nemôže mať importy ani štartovaciu funkciu. Kontrola povoľuje najviac 32 MiB pamäte na inštanciu, 50 miliónov jednotiek práce na volanie a 500 miliónov na celú sadu. Tieto hranice nie sú časovým limitom. Kontrolný nástroj je určený autorovi pre dôveryhodné referenčné súbory. Zdrojový archív aj zdroje priložené k novému balíku obsahujú kontrolný nástroj a prípady príslušného príkladu.
Možnosti a hranice Rust SDK v1
Môžete vytvárať vlastné dátové štruktúry, celočíselné aj reálne cieľové funkcie, inicializáciu, operátory a lokálne hľadanie. Voliteľné rozhrania podporujú navádzanie, opravy a kombinovanie riešení. Príklad QAP ukazuje rýchle vyhodnotenie zmeny pri výmene priradení. Príklad najmenších štvorcov upravuje súradnice riešenia a priebežne aktualizuje odchýlky od zadaných meraní.
Modul sa vykonáva na CPU vo výpočtovom procese servera. Pri lokálnom serveri ide o tento počítač. Rust SDK v1 má limity pamäte a vykonanej práce a neposkytuje prístup k súborom, sieti, natívnym knižniciam ani GPU. Jadro Refined nie je súčasťou SDK alebo importovaného balíka. Výkon môže byť odlišný od vstavaných natívnych adaptérov.
Balík môže mať najviac 4 MiB a jeho zostavený modul najviac 512 KiB. Ďalšie limity a presný kontrakt nájdete v súbore README. Bežné dokumenty zadania alebo definície majú samostatný limit 128 KiB.
Zdrojový kód, dáta a prenos do inej inštalácie
Zdrojové balíky vstavaných adaptérov slúžia na prezeranie ich aktuálnej implementácie. Pri vlastnom adaptéri používajte zostaviteľný projekt a verejné rozhranie Rust SDK. Kontrola importovaného balíka overuje identitu modulu a jeho rozhranie. Priložený zdrojový kód dodáva autor; aplikácia nezaručuje jeho zhodu s ľubovoľným nahraným modulom.
Pre ďalšie vstupy môžete používať samostatné dátové zadania. Na prenos spustiteľného adaptéra do inej inštalácie si však odložte celý balík alebo použite Stiahnuť importovateľný balík v pracovnom priestore. Export obyčajného zadania alebo definície obsahuje iba odkaz na modul a sám jeho spustiteľný obsah neprenesie.
Build and import your own Rust adapter
Use Rust SDK v1 to define the candidate state, evaluation, operators and local search. Download a prepared adapter package to try it immediately, or download the source project to change its algorithm. Editing and building require Rust and Node.js.
- Extract the source archive and edit
examples/qap/src/lib.rsorexamples/weighted-fit/src/lib.rs. Read the includedREADME.mdfor the contract and limits. - From the extracted directory containing
Cargo.tomlandpackage.mjs, run the QAP build, checker and packaging commands shown above. Use a new output filename if the package already exists. - In RoboPol Math (Beta), choose Import adapter or task and select the resulting
qap.adapter.json. After the executable checks finish, the adapter appears in My adapters. - Review the data, choose Validate input, then Calculate. Rebuild and import a new package whenever the algorithm changes. Earlier calculations retain their original executable identity.
Check trusted reference cases locally
The project includes a standalone native checker in checker/, fixtures for both examples and their contract in checker/FIXTURES.md. No RoboPol Math (Beta) server or private core is required. The checker accepts a compiled module or complete executable package as its first argument and a fixture file as its second. The fixture's description must match the module and the manifest's descriptionContract. Write independently checked expected states, moves, evaluations and validation results for your problem. Exact i128 scores and tolerance-bounded finite f64 scores remain distinct.
The checker emits a JSON report of actual callback checks and exits with a nonzero status on failure. Its coreUsed:false report describes a module check, not a Refined calculation or an optimality proof. Import admission and an actual application calculation remain separate steps. Trusted fixture files are data; the checker generates no code from them.
Checker modules have no imports or start functions, at most 32 MiB of memory per instance, 50 million fuel units per call and 500 million per suite. These instruction/memory limits are not a wall-time guarantee. The checker is a local author tool for trusted fixtures. Both the full source archive and a new single-example package's source include the checker and matching example fixtures.
Import the complete JSON package, not an individual .rs or .wasm file or the source ZIP. The package limit is 4 MiB and the module limit is 512 KiB. SDK v1 executes on the calculation server's CPU with bounded memory and work, without filesystem, network, native-library or GPU services. The Refined core remains separate.
Reuse an adapter with separate datasets. To move it to another installation, keep the original package or choose Download executable package in the workspace or source viewer. A task or definition export contains executable references rather than the executable itself. Supplied author source is reference material; source-to-binary equivalence is not attested for arbitrary imported modules.