{"id":40818946,"url":"https://github.com/eth-act/skunkworks-dotnet","last_synced_at":"2026-01-21T21:44:43.071Z","repository":{"id":318562245,"uuid":"1059644741","full_name":"eth-act/skunkworks-dotnet","owner":"eth-act","description":null,"archived":false,"fork":false,"pushed_at":"2025-11-12T13:47:54.000Z","size":65,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-12T14:22:52.067Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eth-act.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-18T18:21:00.000Z","updated_at":"2025-11-12T13:47:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"57b46c30-fac3-47a8-ac27-46041434adf4","html_url":"https://github.com/eth-act/skunkworks-dotnet","commit_stats":null,"previous_names":["eth-act/skunkworks-dotnet"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/eth-act/skunkworks-dotnet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eth-act%2Fskunkworks-dotnet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eth-act%2Fskunkworks-dotnet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eth-act%2Fskunkworks-dotnet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eth-act%2Fskunkworks-dotnet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eth-act","download_url":"https://codeload.github.com/eth-act/skunkworks-dotnet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eth-act%2Fskunkworks-dotnet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28644149,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T21:29:11.980Z","status":"ssl_error","status_checked_at":"2026-01-21T21:24:31.872Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-21T21:44:42.366Z","updated_at":"2026-01-21T21:44:43.066Z","avatar_url":"https://github.com/eth-act.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# skunkworks-dotnet\n\n## Prerequisites\n\n* Docker\n* Rust toolchain (for building emulator)\n* Make\n* GNU toolchain for RISC-V in `/opt/riscv-newlib`\n* w2c2 in `/opt/w2c2/w2c2`\n\n### GNU toolchain for RISC-V\n\n```\ngit clone https://github.com/riscv/riscv-gnu-toolchain\ncd riscv-gnu-toolchain\nsudo apt-get install autoconf automake autotools-dev curl python3 python3-pip python3-tomli libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build git cmake libglib2.0-dev libslirp-dev\n./configure --prefix=/opt/riscv-newlib --with-arch=rv64ima --disable-gdb --with-cmodel=medany\nsudo make -j 8\n```\n\n#### Troubleshooting\n\nIf `make` fails to recursively clone needed submodules, try `git clone --recursive https://github.com/riscv/riscv-gnu-toolchain` instead. This takes significantly longer though\n\n### w2c2\n\n```\ncd /opt\ngit clone https://github.com/turbolent/w2c2.git\n```\n\n## Building\n\n### Build and run basic example\n\n\n```\nmake all\n```\n\n#### Run example\n\n```\ncd dotnet-cc/examples/basic\nmake\n```\n\n#### Build docker image\n\n```\n./docker_build.sh\n```\n\n#### Interactively start docker image\n\nUseful for debugging and checking the intermediate result\n\n```\n./docker_run.sh\n./a.out\n```\n\n## Memory\n\nwasmAllocate allocates by default a max of 1\u003c\u003c12=4096 pages (min 51 possible)\nwith each page having 65536 (1\u003c\u003c16) bytes.\n\nMultiplied that's in total 250 MB.\n\nThe memory-mapped I/O regions for the target are (TODO):\n\n- **Input Buffer** at `0x90000000` - Where input data is placed for the program\n- **System Address** at `0xa0000000` (= `RAM_ADDR` = `REG_FIRST`) - Contains system address\n- **UART Address** at `SYS_ADDR + 512` - Single bytes written here will be copied to the standard output\n- **Output Buffer** at `0xa0010000` - Where programs write output data\n- **RAM** starting at `0xa0020000` - Main memory for program execution (~512MB)\n\nzisk/core/src/mem.rs\n\n## Maintainability of Components\n\n### dotnet 10\n\nCurrently there's only a release candidate with the full release scheduled end of 2025.\nIt's also an LTS release and supported until end of 2028.\n\nhttps://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core\n\nAdditionally it includes various performance improvements compared to previous versions.\n\nhttps://devblogs.microsoft.com/dotnet/performance-improvements-in-net-10/\n\n### Wasm platform\n\nWasm develops rapidly with the 3.0 standard being completed in September 2025. dotnet 9 und 10\nemit code for Wasm 2.0 while most tooling like runtimes and utilities still only support Wasm 1.0.\n\nWhile this is bad for maintenance, this might even out since it's an open standard with a large\nand active community.\n\nBut generally it might make sense to limit dependencies.\n\n#### Official tools\n\nhttps://github.com/bytecodealliance/wasm-tools\n\nhttps://github.com/WebAssembly/wabt\n\n### Microsoft.DotNet.ILCompiler\n\nThe dotnet Native AOT LLVM compiler is developed as a branch of the dotnet Runtime Lab project.\nIt seems to have a consistent activity with a few commits per month. The previous experiment\nNative AOT for Linux and Windows has been finished and is now part of upstream dotnet.\n\nThe compiler is provided as a nuget package on https://www.nuget.org/packages/Microsoft.DotNet.ILCompiler/\nand on Github in a separate branch https://github.com/dotnet/runtimelab/tree/feature/NativeAOT-LLVM\n\nUsage is mixed in both active and now archived projects.\n\nAlso it should be mentioned that there is the somewhat similar Blazor Project targeting ASP.Net with\nWebAssembly. Should Microsoft drop the Native AOT LLVM experiment it may be possible to use Blazor for\ncompilation with extra steps.\n\nhttps://dotnet.microsoft.com/en-us/apps/aspnet/web-apps/blazor\n\n### w2c2\n\nw2c2 is in active development and usage. Also there are blog articles about it and various forks.\n\nWhile supporting WASM and WASI, WASM 2.0/wasip2 modules are extracted in a separate build step.\n\nhttps://github.com/turbolent/w2c2\n\n## Current Limitations\n\n### System.Security.Cryptography won't run\n\nWithin the dotnet runtime code classes and methods are annotated with\n\n```\n[UnsupportedOSPlatform(\"browser\")]\n```\n\nand a `PlatformNotSupportedException` is thrown\n\nhttps://github.com/dotnet/runtime/blob/80fb00f580f5b2353ff3a8aa78c5b5fd3f275a34/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CryptoConfig.cs#L307\n\nbecause of a mismatch between sync and async APIs on Browser platforms. (Why should this apply to non-browser wasm though?) A recommended workaround is to use available host functions\n\n- https://github.com/dotnet/runtime/issues/73858\n\n- https://github.com/dotnet/runtime/issues/82472\n\nBouncycastle can be used though.\n\n### tbd\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feth-act%2Fskunkworks-dotnet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feth-act%2Fskunkworks-dotnet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feth-act%2Fskunkworks-dotnet/lists"}