{ "kind": "native-instance-and-authored-behavior-correctness-not-performance", "sanitized_c_host": false, "zig_mode": "ReleaseSafe; Zig object is not ASan-instrumented", "compiler": "cc (Debian 14.2.0-19) 14.2.0", "cases": [ { "name": "counter", "commands": 5, "failed_events": 0, "states_and_views_match": true, "fresh_process_restore": true, "source": "# Space or the tap control increments a state that is displayed and drawn.\nstate count = 0\ninput tap = Space\ntext label(80, 90, count, \"Count: \")\nbox tile(80, 150, 40 + min(count, 20) * 8, 60, \"#356548\")\non tap.down {\n count = count + 1\n}\n", "source_sha256": "53cb3a93ff0f26a3d208a5876bfff9ecb1c39e9a01acc101566727733ba166a8", "prepared_sha256": "eada952dee9afd7071370215364b2a6717a28f03e0513cdd0cae4695939ec52b", "native_binary_sha256": "df9f3e007d2813c94bbbd4d08cfae06571e7d8b190b6212735b32884c07d24a6", "native_binary_bytes": 213768 }, { "name": "toggle", "commands": 28, "failed_events": 0, "states_and_views_match": true, "fresh_process_restore": true, "source": "# Space toggles the circle. Right arrow moves the tile.\nstate visible = 1\nstate position = 120\ninput toggle = Space\ninput move = ArrowRight\ncircle marker(position, 140, visible * 24, \"#c78638\")\nbox tile(position - 24, 190, 48, 48, \"#356548\")\ntext value(80, 80, visible, \"Visible: \")\non toggle.down {\n visible = !visible\n}\non move.down {\n position = position + 40\n if position > 560 {\n position = 80\n }\n}\n", "source_sha256": "3de97fab9d316c17ba6a0c82a16cccd3baafc6816b879bf9b0a174210c8a1915", "prepared_sha256": "fc96ee38b256117a7bfe2859b7126e22262c19e96047a8d01fbe30d4d1a28764", "native_binary_sha256": "d446eed2ec2e8939da30c3cb0b6c968e811f725081f2b08beeb555b98ee83652", "native_binary_bytes": 213768 }, { "name": "charge", "commands": 104, "failed_events": 0, "states_and_views_match": true, "fresh_process_restore": true, "source": "# All holding, charging, gravity, jumping, and floor behavior is authored here.\nstate holding = 0\nstate charge = 0\nstate y = 240\nstate velocity = 0\ninput jump = Space\nbox floor(40, 261, 560, 4, \"#356548\")\ncircle actor(180, y, 20, \"#c78638\")\nbox meter(80, 80, charge * 200, 12, \"#c78638\")\ntext amount(80, 60, charge, \"Charge: \")\non jump.down {\n if y >= 240 {\n holding = 1\n charge = 0\n }\n}\non jump.up {\n if holding {\n velocity = -(160 + charge * 300)\n holding = 0\n charge = 0\n }\n}\non frame {\n if holding {\n charge = clamp(charge + dt, 0, 1)\n }\n velocity = velocity + 600 * dt\n y = y + velocity * dt\n if y >= 240 {\n y = 240\n velocity = 0\n }\n}\n", "source_sha256": "8d69d9fd51d44ab754d560eb7ff5102ea8a34540753cd7170b3bd800e4294f56", "prepared_sha256": "7ba5fa094b0bc772202bb44a62b3c8377c4f3924db246ec429c2faee4948b09f", "native_binary_sha256": "15505a1f178a40d010eb97d30c236fdcde3909282de2436aa4015b1b1f6b108d", "native_binary_bytes": 213768 }, { "name": "direct", "commands": 3, "failed_events": 0, "states_and_views_match": true, "fresh_process_restore": true, "source": "# 도형을 잡은 위치를 유지해 이동합니다. 취소하면 잡기 전 위치로 돌아갑니다.\nstate x = 80\nstate y = 160\nstate grab_x = 0\nstate grab_y = 0\nstate start_x = 80\nstate start_y = 160\nstate dragging = 0\n\ninput drag = pointer(tile)\ninput left = ArrowLeft\ninput right = ArrowRight\n\nbox left_area(20, 100, 280, 220, \"#233a31\")\nbox right_area(340, 100, 280, 220, \"#343b25\")\nbox tile(x, y, 56, 44, \"#c9f08b\")\ntext horizontal(30, 45, x, \"x: \")\ntext vertical(180, 45, y, \"y: \")\ntext region(350, 70, x >= 320, \"오른쪽 영역: \")\ntext active(30, 75, dragging, \"잡고 있음: \")\n\non drag.down {\n start_x = x\n start_y = y\n grab_x = event_x - x\n grab_y = event_y - y\n dragging = 1\n}\non drag.move {\n x = clamp(event_x - grab_x, 20, 564)\n y = clamp(event_y - grab_y, 100, 276)\n}\non drag.up {\n # 놓기는 마지막으로 표시한 위치를 확정합니다.\n dragging = 0\n}\non drag.cancel {\n x = start_x\n y = start_y\n dragging = 0\n}\non left.down {\n if dragging == 0 { x = max(20, x - 10) }\n}\non right.down {\n if dragging == 0 { x = min(564, x + 10) }\n}\n", "source_sha256": "57177e5197d75a6185cd3ac5df2be920ddba9a9b0fcc2dddab3560b815249f0a", "prepared_sha256": "27f0aa76eb3e12e289bcd6edf6c2ae72892a2dfe1ff094b619671f0583e2c8d3", "native_binary_sha256": "3cd4df84f16a734758041c6dbfb46faffcf5836a3415e80bfbec5091a09e18d1", "native_binary_bytes": 213768 }, { "name": "routed", "commands": 8, "failed_events": 0, "states_and_views_match": true, "fresh_process_restore": true, "source": "# 하나의 포인터 입력과 네 반응을 모든 도형이 공유합니다.\nstate selected = 0\nrecord Tile {\n x = 0; y = 0\n ox = 0; oy = 0\n sx = 0; sy = 0\n held = 0; id = 0\n}\nitem green = Tile(x=80, y=120, sx=80, sy=120, id=1)\nitem blue = Tile(x=280, y=160, sx=280, sy=160, id=2)\nitem amber = Tile(x=450, y=220, sx=450, sy=220, id=3)\ninput left = ArrowLeft\ninput right = ArrowRight\ninput up = ArrowUp\ninput down = ArrowDown\ninput drag = pointer {\n green_box: green\n blue_box: blue\n amber_box: amber\n}\nbox board(20,90,600,240,\"#233a31\")\ntext help(25,40,selected,\"선택한 도형: \")\nbox green_box(green.x,green.y,56,44,\"#c9f08b\")\nbox blue_box(blue.x,blue.y,56,44,\"#74c4d4\")\nbox amber_box(amber.x,amber.y,56,44,\"#dfb184\")\n\nrule grab(t: Tile) {\n selected = t.id\n t.sx = t.x; t.sy = t.y\n t.ox = event_x - t.x; t.oy = event_y - t.y\n t.held = 1\n}\nrule move(t: Tile) {\n t.x = clamp(event_x - t.ox, 20, 564)\n t.y = clamp(event_y - t.oy, 90, 286)\n}\nrule drop(t: Tile) { t.held = 0 }\nrule cancel(t: Tile) { t.x = t.sx; t.y = t.sy; t.held = 0 }\nrule go_left(t: Tile) {\n if selected == t.id && t.held == 0 { t.x = clamp(t.x - 10, 20, 564) }\n}\nrule go_right(t: Tile) {\n if selected == t.id && t.held == 0 { t.x = clamp(t.x + 10, 20, 564) }\n}\nrule go_up(t: Tile) {\n if selected == t.id && t.held == 0 { t.y = clamp(t.y - 10, 90, 286) }\n}\nrule go_down(t: Tile) {\n if selected == t.id && t.held == 0 { t.y = clamp(t.y + 10, 90, 286) }\n}\n\non drag.down use grab(drag.target)\non drag.move use move(drag.target)\non drag.up use drop(drag.target)\non drag.cancel use cancel(drag.target)\n\non left.down use go_left(green)\non right.down use go_right(green)\non up.down use go_up(green)\non down.down use go_down(green)\n\non left.down use go_left(blue)\non right.down use go_right(blue)\non up.down use go_up(blue)\non down.down use go_down(blue)\n\non left.down use go_left(amber)\non right.down use go_right(amber)\non up.down use go_up(amber)\non down.down use go_down(amber)\n", "source_sha256": "656e81577c250df704ba744b1ea6ec9c987ab3b8ee90c758062ac4beaf195650", "prepared_sha256": "710503e7ffadf02b309c24a761caade4c5a093750d6801956cc698bfc263fc09", "native_binary_sha256": "a7331278432f8c2f827ddac036dc8dab4299bffdd2db902f14420b1cf7c31435", "native_binary_bytes": 213768 }, { "name": "document", "commands": 5, "failed_events": 0, "states_and_views_match": true, "fresh_process_restore": true, "source": "# 웹 컨트롤이 요청한 분할 비율을 받습니다. 레이아웃과 문서는 브라우저가 소유합니다.\nstate ratio = 50\ninput split = value\ninput reset = KeyR\non split.change { ratio = clamp(event_value, 20, 80) }\non reset.down { ratio = 50 }\n", "source_sha256": "057d2e665d72dd3fce7ac59d232a65e9e0e1a6ca1f8c1e1b36ae766e480367d1", "prepared_sha256": "c74315c1b0067e167a4678b30505d1770b0753b601e8acee27f6d598ac7b9ffb", "native_binary_sha256": "555d4f31801ac70ef93fa84c73da7a2409a60bc8743251abd7969e0a7c5c7730", "native_binary_bytes": 213768 }, { "name": "atomic-error", "commands": 2, "failed_events": 1, "states_and_views_match": true, "fresh_process_restore": true, "source": "state x=7\nstate y=2\ninput n=value\non n.change {x=event_value; y=1/event_value}\ntext v(1,2,y,\"value: \")", "source_sha256": "61a5478e7147ef281d617017910af36ad1bae3dabc97c03c8569c5d8b0e5fe19", "prepared_sha256": "6a415d33780227158ebeae2a75c7520bf13bad3c0a6fef7ee82f5c323be226f0", "native_binary_sha256": "c115e7e8ddbe0d622374203599042255560dcbfb5f2e31c378b5d441c23c0ce6", "native_binary_bytes": 213776 }, { "name": "blank", "commands": 0, "failed_events": 0, "states_and_views_match": true, "fresh_process_restore": true, "source": "", "source_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "prepared_sha256": "1c8f5ade56ee8ec931a62fd1f68ef3635b17297d3a54b20c954860c4a43b6155", "native_binary_sha256": "023396eb5190c11ed724712ff5bcafc34ad09e4c43509e7e8445f998cfb57ce1", "native_binary_bytes": 213744 }, { "name": "literal-boundary", "commands": 1, "failed_events": 0, "states_and_views_match": true, "fresh_process_restore": true, "source": "state x=-0\ninput n=value\non n.change {x=event_value}\ntext v(1,2,x,\"한글 \\\" \\\\ \\n\")", "source_sha256": "7f480fa50bbddaf4e3a42bbd2132701e2091ef12b499e30c1bdda1dcd947dcc1", "prepared_sha256": "e9a8b1542ecf6b008ad30188cb9e95d29638fab1c38d331c00bf706c40a06d3c", "native_binary_sha256": "c972b112a6ea9b22921253f2ecc07df2b57f423022171f891ab4a0654e82d76e", "native_binary_bytes": 213784 } ], "units": { "native_instances": 3, "checks": "independent-state-staging-inputs-errors-budget-snapshot-conflict-restore", "scalar_instance_bytes": 20064, "scalar_alignment": 8, "app_controller_bytes": 928, "action_bytes": 32, "snapshot_bytes": 244, "all_work_drained": true }, "source_sha256": { "prototypes/workbench/core.zig": "ea237848df0dbd2ce620c2874e64bc5ecbe569bf77f3737e9a4fe1e64fea40cc", "prototypes/workbench/engine.zig": "555b9ff3143888921d90a475bcb7957c18dbf7101ee9e3d2853c01a562cbf3f5", "prototypes/workbench/evaluation.zig": "ce04f0785180aaf6d1dcddc4461817251ad61abf1625ccd04ce673c89774b165", "prototypes/workbench/native.zig": "fe6c445cdfb5a4bc27ea9f540f3880c45b65c33098eec761d4398d9a7fc5c9a6", "prototypes/workbench/manage.py": "02a6566306248cd4da952673d891bf73e6e8aea583b5dee8a20b96d28c61e025", "prototypes/workbench/native/scalar.h": "b84a796bde2f45d59505cc0addb5f5afede0a9c4dc58d40a38dd37a8ac68d1fd", "prototypes/workbench/native/plan.h": "2e9bd7e3c2ecc52f79c8938d09d2a696174c44a245e4bf52b70be2ed02cbbb57", "prototypes/workbench/native/plan.c": "f0bdf8466097cfad54c197120aace8acd5f430170931d575e26807b760ce2173", "prototypes/workbench/native/app.h": "0ea9c9dc18e3d9c34763198c6efbaa3219c6f91764b24f00591d958ca0678ce2", "prototypes/workbench/native/app.c": "a8c0547ca789f498e453f8b8b982d1e06a874f34e72d905d86923d0e573eff66", "prototypes/workbench/native/main.c": "dd28168741e79ffaa73cf74e60b974a1ca84b0473a43aafe089019f61e732aab", "prototypes/workbench/native/prepare.mjs": "3989d4e545255fccf9d846afb79246e874f4cefb03eecef9ee1e2b1ce8fd257e", "prototypes/workbench/native/test.c": "485b97a31f7b0b2fd16000a4c09e3eebfc67045724520d7ba48ffdcb105a8536", "prototypes/workbench/native/check.mjs": "79a1131cedfae67b30122818a29e596c5f5f0eda79c18e771566dc122621006e", "prototypes/workbench/web/compiler.mjs": "349139612d1f7da5f75ef21c65aa697963b760cb35321150fc36f67f3b40adf1", "prototypes/workbench/web/runtime.mjs": "9cf12270bb39b3d6ce0384c56df8bdfabfd9459d3375cc7819290a5fe3e5db54", "prototypes/workbench/web/project.mjs": "8af4cd1a60bbb217c896be20c7c6b8d33989f2166d06e736bf1479d8ecdc8b35", "prototypes/workbench/web/core.wasm": "8fe2f501cb9639fea0817aa57e0b7292ca6779cda4ac156b7c6b3df31d7921e9", "prototypes/connections/runtime.c": "a6c068c6a2cee214b3fe30241459394833917dfb6c0d33052460eab4c6a539a2", "prototypes/connections/runtime.h": "ff03c0be92dcc482247a58a0be54d2dc5c270325b51ceeed37afc2ffa5480b1f", "prototypes/connections/evaluate.c": "ee8b91efc733b9d305711b7cbb7b502ae5d3917e06f750b7f62b632ed0ea6d04", "prototypes/connections/program.h": "b9ea0af3759150637ccba9362ccb73be374ed85b449b0461fc61fb14ee50e8bc", "prototypes/connections/flow.h": "289ff43d191270066e238235023f096946f3f561ec5825d2f6c26006db5fc421", "prototypes/connections/result.h": "00b6cf02262039fd90b197eb781f38c9771beaa8d65f394cba6d3f8d0b2ae79d", "prototypes/connections/store.c": "44702e9414c26d1ee336b2e36e6713560013c2c8d0091a8900042e2468f88015", "prototypes/connections/store.h": "e3cf5f169be02e40f1274105046f29a63a46cd153beaf204d33d6100b9c869b8", "prototypes/connections/store-port.c": "d6bf17878b325e039360816edcbf8d68e41b373cf3e6128d7795e11ae21fdd6f", "prototypes/connections/store-port.h": "a262bac93463bfe9939ca0bdc5989d1665aafc007d61e93c28ffc36478b1fde6" }, "scalar_archive_sha256": "b45932025312c12eea6cd1083c43ed57f3cf3dbbb752c47adba634af8e21c5c2", "scalar_archive_size": " text\t data\t bss\t dec\t hex\tfilename\n 33020\t 0\t 0\t 33020\t 80fc\tprototypes/workbench/build/cache/tmp/3cadbbd6974d5d26/libpure-scalar_zcu.o (ex /home/eunhhu/work/pure/prototypes/workbench/build/native/libpure-scalar.a)\n", "scalar_archive_undefined": "\nprototypes/workbench/build/cache/tmp/3cadbbd6974d5d26/libpure-scalar_zcu.o:\n U memcpy\n U memset\n" }