今日已更新 244 条资讯 | 累计 27419 条内容
关于我们

今日精选

HOT

最新资讯

共 27419 篇
第 28/1371 页
AI 资讯 The Verge AI

The Mermaid Mask is a perfect vacation murder mystery

The Mermaid Mask, the next point-and-click game from Tangle Tower developer SFB Games, has everything you could ask for in a great murder mystery. It starts with a compelling setup: The captain of a submarine is found dead in a locked room, his body next to a mysterious cauldron with blood trickling across the floor. […]

Jay Peters 2026-08-01 21:00 5 原文
AI 资讯 Reddit r/programming

Flycast WASM JIT v1 released (Dreamcast emulator in browser) with technical write-up

Write-up From r/emulation : Six months ago I got upstream Flycast compiling to WebAssembly and running as a libretro core. It booted games at about 2 FPS on the interpreter. Fun proof of concept, completely unplayable. Today, heavy 3D titles like Jet Grind Radio and Shenmue hold their target framerate at native resolution with clean audio, in a browser tab, on ordinary hardware. Here's how that gap closed. Why this wasn't supposed to work Every Dreamcast emulator that runs at full speed depends on a dynamic recompiler. A dynarec generates native code at runtime and jumps into it. WebAssembly makes that structurally impossible: code and data live in separate address spaces, so there's no writable-executable memory to generate into, and nothing you write into linear memory can ever be executed. Upstream had already declined WASM support, and the consensus was that this was a dead end. Browser Dreamcast would stay a slideshow. Fuck that. The workaround The JIT doesn't patch memory. It generates entire WebAssembly modules at runtime. SH4 code is decoded into Flycast's SHIL IR, lowered to wasm bytecode in the browser, compiled and instantiated through the wasm API, and dispatched via call_indirect from a C dispatch loop. The host boundary gets crossed once per module, at compile time. Steady-state execution is wasm calling wasm, with no JavaScript anywhere on the dispatch path. Getting from "it works" to "it's fast" Months of walls, and slightly less hair. Every one of these is documented with numbers in the writeup: Self-modifying code detection via per-page generation counters, eliminating 98% of runtime block hashing Fusing hot blocks into multi-block modules Inline fast paths for guest memory access. This was the big wall. Memory ops were crossing the wasm to JS import boundary about 500,000 times per frame. It's now about 700. A frame pacer that repays guest time instead of counting renders Compile storm management so scene transitions don't freeze An AudioWorklet r

/u/NXGZ 2026-08-01 20:55 7 原文
AI 资讯 Dev.to

jenkins pipeline for Github cloning and building

After setting up Jenkins and creating my first Declarative Pipeline, the next step was preparing my machine to build Docker images. Since my pipeline will eventually clone code from GitHub, build a Docker image, and push it to a container registry, Jenkins needs access to Docker. Without Docker installed, the docker build stage would fail because Jenkins wouldn't be able to execute Docker commands. Installing Docker On my Ubuntu machine, I installed Docker using: sudo apt update sudo apt install docker.io -y Once the installation completed, I verified it using: docker --version This confirmed that Docker was successfully installed and ready to use. Verifying Docker Installation Installing Docker is only half the job. The next step is to check whether your current user has permission to use Docker. Run: docker ps Expected Output If everything is configured correctly, you should see something similar to: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES Even if no containers are running, getting an empty table like the one above means Docker is working correctly. What If You Get a Permission Error? If you see an error like: permission denied while trying to connect to the Docker daemon socket it means your current user doesn't have permission to access the Docker daemon. First, check which user you're currently logged in as: whoami Example output: nishant Now add your user to the docker group: sudo usermod -aG docker $USER What does this command do? usermod modifies a user account. -aG means append the user to a supplementary group without removing existing groups. docker is the group that has permission to communicate with the Docker daemon. $USER automatically refers to your currently logged-in username. Apply the Changes The group membership won't take effect immediately. You have two options: Option 1 (Recommended): Log out of your Ubuntu session and log back in. This refreshes your user groups and is the most reliable method. Option 2: Simply restart your ter

Nishant Bhardwaj 2026-08-01 20:44 6 原文