From 631be6ccb45cb83508beb7c3f36fa2f74608ef5d Mon Sep 17 00:00:00 2001 From: Jovansonlee Cesar Date: Sat, 30 Mar 2024 00:30:18 +0800 Subject: [PATCH] add sauron-dev --- frameworks/keyed/sauron-dev/.gitignore | 2 + frameworks/keyed/sauron-dev/Cargo.toml | 21 + frameworks/keyed/sauron-dev/README.md | 12 + .../keyed/sauron-dev/bundled-dist/index.html | 16 + .../js-framework-benchmark-sauron.js | 627 ++++++++++++++++++ .../js-framework-benchmark-sauron_bg.wasm | Bin 0 -> 256870 bytes frameworks/keyed/sauron-dev/index.html | 16 + frameworks/keyed/sauron-dev/package-lock.json | 171 +++++ frameworks/keyed/sauron-dev/package.json | 26 + frameworks/keyed/sauron-dev/src/lib.rs | 256 +++++++ 10 files changed, 1147 insertions(+) create mode 100644 frameworks/keyed/sauron-dev/.gitignore create mode 100644 frameworks/keyed/sauron-dev/Cargo.toml create mode 100644 frameworks/keyed/sauron-dev/README.md create mode 100644 frameworks/keyed/sauron-dev/bundled-dist/index.html create mode 100644 frameworks/keyed/sauron-dev/bundled-dist/js-framework-benchmark-sauron.js create mode 100644 frameworks/keyed/sauron-dev/bundled-dist/js-framework-benchmark-sauron_bg.wasm create mode 100644 frameworks/keyed/sauron-dev/index.html create mode 100644 frameworks/keyed/sauron-dev/package-lock.json create mode 100644 frameworks/keyed/sauron-dev/package.json create mode 100644 frameworks/keyed/sauron-dev/src/lib.rs diff --git a/frameworks/keyed/sauron-dev/.gitignore b/frameworks/keyed/sauron-dev/.gitignore new file mode 100644 index 000000000..a96f68cf2 --- /dev/null +++ b/frameworks/keyed/sauron-dev/.gitignore @@ -0,0 +1,2 @@ +node_modules +/target diff --git a/frameworks/keyed/sauron-dev/Cargo.toml b/frameworks/keyed/sauron-dev/Cargo.toml new file mode 100644 index 000000000..5d84c806f --- /dev/null +++ b/frameworks/keyed/sauron-dev/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "js-framework-benchmark-sauron" +version = "0.1.0" +authors = ["Markus Kohlhase ", "Jovansonlee Cesar " ] +edition = "2021" + +[lib] +crate-type = ["cdylib"] + +[dependencies] +rand = { version = "0.8.5", features = ["small_rng"] } +getrandom = { version = "0.2.7", features = ["js"] } +sauron = { git = "https://github.com/ivanceras/sauron", branch = "develop" } + +[profile.release] +lto = true +codegen-units = 1 +panic = "abort" + +[package.metadata.wasm-pack.profile.release] +wasm-opt = ['-O4'] diff --git a/frameworks/keyed/sauron-dev/README.md b/frameworks/keyed/sauron-dev/README.md new file mode 100644 index 000000000..8491aeb25 --- /dev/null +++ b/frameworks/keyed/sauron-dev/README.md @@ -0,0 +1,12 @@ +Because of the heavy amount of Rust dependencies, this example is pre-compiled, so you don't need to compile anything. + +However, if you do want to compile it, you will need the following: + +* [Rust](https://www.rust-lang.org/tools/install) + +After installing that, run these commands: + +``` +npm install +npm run build-prod-force +``` diff --git a/frameworks/keyed/sauron-dev/bundled-dist/index.html b/frameworks/keyed/sauron-dev/bundled-dist/index.html new file mode 100644 index 000000000..933bad5f2 --- /dev/null +++ b/frameworks/keyed/sauron-dev/bundled-dist/index.html @@ -0,0 +1,16 @@ + + + + + Sauron + + + + +
+ + + diff --git a/frameworks/keyed/sauron-dev/bundled-dist/js-framework-benchmark-sauron.js b/frameworks/keyed/sauron-dev/bundled-dist/js-framework-benchmark-sauron.js new file mode 100644 index 000000000..512ee6350 --- /dev/null +++ b/frameworks/keyed/sauron-dev/bundled-dist/js-framework-benchmark-sauron.js @@ -0,0 +1,627 @@ +let wasm; + +const heap = new Array(128).fill(undefined); + +heap.push(undefined, null, true, false); + +function getObject(idx) { return heap[idx]; } + +let heap_next = heap.length; + +function dropObject(idx) { + if (idx < 132) return; + heap[idx] = heap_next; + heap_next = idx; +} + +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} + +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + + heap[idx] = obj; + return idx; +} + +const cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } ); + +if (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); }; + +let cachedUint8Memory0 = null; + +function getUint8Memory0() { + if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) { + cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8Memory0; +} + +function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} + +function debugString(val) { + // primitive types + const type = typeof val; + if (type == 'number' || type == 'boolean' || val == null) { + return `${val}`; + } + if (type == 'string') { + return `"${val}"`; + } + if (type == 'symbol') { + const description = val.description; + if (description == null) { + return 'Symbol'; + } else { + return `Symbol(${description})`; + } + } + if (type == 'function') { + const name = val.name; + if (typeof name == 'string' && name.length > 0) { + return `Function(${name})`; + } else { + return 'Function'; + } + } + // objects + if (Array.isArray(val)) { + const length = val.length; + let debug = '['; + if (length > 0) { + debug += debugString(val[0]); + } + for(let i = 1; i < length; i++) { + debug += ', ' + debugString(val[i]); + } + debug += ']'; + return debug; + } + // Test for built-in + const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); + let className; + if (builtInMatches.length > 1) { + className = builtInMatches[1]; + } else { + // Failed to match the standard '[object ClassName]' + return toString.call(val); + } + if (className == 'Object') { + // we're a user defined class or Object + // JSON.stringify avoids problems with cycles, and is generally much + // easier than looping through ownProperties of `val`. + try { + return 'Object(' + JSON.stringify(val) + ')'; + } catch (_) { + return 'Object'; + } + } + // errors + if (val instanceof Error) { + return `${val.name}: ${val.message}\n${val.stack}`; + } + // TODO we could test for more things here, like `Set`s and `Map`s. + return className; +} + +let WASM_VECTOR_LEN = 0; + +const cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } ); + +const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' + ? function (arg, view) { + return cachedTextEncoder.encodeInto(arg, view); +} + : function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; +}); + +function passStringToWasm0(arg, malloc, realloc) { + + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length, 1) >>> 0; + getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + + const mem = getUint8Memory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr + offset] = code; + } + + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; + const view = getUint8Memory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + + offset += ret.written; + ptr = realloc(ptr, len, offset, 1) >>> 0; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} + +let cachedInt32Memory0 = null; + +function getInt32Memory0() { + if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) { + cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); + } + return cachedInt32Memory0; +} + +const CLOSURE_DTORS = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(state => { + wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b) +}); + +function makeMutClosure(arg0, arg1, dtor, f) { + const state = { a: arg0, b: arg1, cnt: 1, dtor }; + const real = (...args) => { + // First up with a closure we increment the internal reference + // count. This ensures that the Rust closure environment won't + // be deallocated while we're invoking it. + state.cnt++; + const a = state.a; + state.a = 0; + try { + return f(a, state.b, ...args); + } finally { + if (--state.cnt === 0) { + wasm.__wbindgen_export_2.get(state.dtor)(a, state.b); + CLOSURE_DTORS.unregister(state); + } else { + state.a = a; + } + } + }; + real.original = state; + CLOSURE_DTORS.register(real, state, state); + return real; +} +function __wbg_adapter_24(arg0, arg1, arg2) { + wasm.wasm_bindgen__convert__closures__invoke1_mut__h8ac7eec719bf683d(arg0, arg1, addHeapObject(arg2)); +} + +/** +*/ +export function start() { + wasm.start(); +} + +function handleError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + wasm.__wbindgen_exn_store(addHeapObject(e)); + } +} + +function getCachedStringFromWasm0(ptr, len) { + if (ptr === 0) { + return getObject(len); + } else { + return getStringFromWasm0(ptr, len); + } +} + +function isLikeNone(x) { + return x === undefined || x === null; +} + +async function __wbg_load(module, imports) { + if (typeof Response === 'function' && module instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === 'function') { + try { + return await WebAssembly.instantiateStreaming(module, imports); + + } catch (e) { + if (module.headers.get('Content-Type') != 'application/wasm') { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + + } else { + throw e; + } + } + } + + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + + } else { + const instance = await WebAssembly.instantiate(module, imports); + + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; + + } else { + return instance; + } + } +} + +function __wbg_get_imports() { + const imports = {}; + imports.wbg = {}; + imports.wbg.__wbg_instanceof_MouseEvent_fdc007d866fdd0df = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof MouseEvent; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbindgen_object_drop_ref = function(arg0) { + takeObject(arg0); + }; + imports.wbg.__wbg_now_4e659b3d15f470d9 = function(arg0) { + const ret = getObject(arg0).now(); + return ret; + }; + imports.wbg.__wbindgen_cb_drop = function(arg0) { + const obj = takeObject(arg0).original; + if (obj.cnt-- == 1) { + obj.a = 0; + return true; + } + const ret = false; + return ret; + }; + imports.wbg.__wbg_addEventListener_53b787075bd5e003 = function() { return handleError(function (arg0, arg1, arg2, arg3) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + getObject(arg0).addEventListener(v0, getObject(arg3)); + }, arguments) }; + imports.wbg.__wbg_lastChild_83efe6d5da370e1f = function(arg0) { + const ret = getObject(arg0).lastChild; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_removeChild_96bbfefd2f5a0261 = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).removeChild(getObject(arg1)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_is_010fdc0f4ab96916 = function(arg0, arg1) { + const ret = Object.is(getObject(arg0), getObject(arg1)); + return ret; + }; + imports.wbg.__wbg_replaceWith_72e597a5990af8e0 = function() { return handleError(function (arg0, arg1) { + getObject(arg0).replaceWith(getObject(arg1)); + }, arguments) }; + imports.wbg.__wbg_removeAttribute_1b10a06ae98ebbd1 = function() { return handleError(function (arg0, arg1, arg2) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + getObject(arg0).removeAttribute(v0); + }, arguments) }; + imports.wbg.__wbg_createElementNS_556a62fb298be5a2 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + var v1 = getCachedStringFromWasm0(arg3, arg4); + const ret = getObject(arg0).createElementNS(v0, v1); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_createElement_8bae7856a4bb7411 = function() { return handleError(function (arg0, arg1, arg2) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + const ret = getObject(arg0).createElement(v0); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_createTextNode_0c38fd80a5b2284d = function(arg0, arg1, arg2) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + const ret = getObject(arg0).createTextNode(v0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_createComment_354ccab4fdc521ee = function(arg0, arg1, arg2) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + const ret = getObject(arg0).createComment(v0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_createDocumentFragment_8c86903bbb0a3c3c = function(arg0) { + const ret = getObject(arg0).createDocumentFragment(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_insertAdjacentHTML_00b8bca474a1bc0a = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + var v1 = getCachedStringFromWasm0(arg3, arg4); + getObject(arg0).insertAdjacentHTML(v0, v1); + }, arguments) }; + imports.wbg.__wbg_appendChild_580ccb11a660db68 = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).appendChild(getObject(arg1)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_tagName_a98846fa0b63dd7f = function(arg0, arg1) { + const ret = getObject(arg1).tagName; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbg_instanceof_Window_f401953a2cf86220 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof Window; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbindgen_object_clone_ref = function(arg0) { + const ret = getObject(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_cancelIdleCallback_3a36cf77475b492b = function(arg0, arg1) { + getObject(arg0).cancelIdleCallback(arg1 >>> 0); + }; + imports.wbg.__wbg_clearTimeout_ba63ae54a36e111e = function(arg0, arg1) { + getObject(arg0).clearTimeout(arg1); + }; + imports.wbg.__wbg_cancelAnimationFrame_111532f326e480af = function() { return handleError(function (arg0, arg1) { + getObject(arg0).cancelAnimationFrame(arg1); + }, arguments) }; + imports.wbg.__wbg_querySelector_a5f74efc5fa193dd = function() { return handleError(function (arg0, arg1, arg2) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + const ret = getObject(arg0).querySelector(v0); + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_crypto_d05b68a3572bb8ca = function(arg0) { + const ret = getObject(arg0).crypto; + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_is_object = function(arg0) { + const val = getObject(arg0); + const ret = typeof(val) === 'object' && val !== null; + return ret; + }; + imports.wbg.__wbg_process_b02b3570280d0366 = function(arg0) { + const ret = getObject(arg0).process; + return addHeapObject(ret); + }; + imports.wbg.__wbg_versions_c1cb42213cedf0f5 = function(arg0) { + const ret = getObject(arg0).versions; + return addHeapObject(ret); + }; + imports.wbg.__wbg_node_43b1089f407e4ec2 = function(arg0) { + const ret = getObject(arg0).node; + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_is_string = function(arg0) { + const ret = typeof(getObject(arg0)) === 'string'; + return ret; + }; + imports.wbg.__wbg_msCrypto_10fc94afee92bd76 = function(arg0) { + const ret = getObject(arg0).msCrypto; + return addHeapObject(ret); + }; + imports.wbg.__wbg_newwithlength_e9b4878cebadb3d3 = function(arg0) { + const ret = new Uint8Array(arg0 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_require_9a7e0f667ead4995 = function() { return handleError(function () { + const ret = module.require; + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbindgen_is_function = function(arg0) { + const ret = typeof(getObject(arg0)) === 'function'; + return ret; + }; + imports.wbg.__wbindgen_string_new = function(arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbg_call_b3ca7c6051f9bec1 = function() { return handleError(function (arg0, arg1, arg2) { + const ret = getObject(arg0).call(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbindgen_memory = function() { + const ret = wasm.memory; + return addHeapObject(ret); + }; + imports.wbg.__wbg_buffer_12d079cc21e14bdb = function(arg0) { + const ret = getObject(arg0).buffer; + return addHeapObject(ret); + }; + imports.wbg.__wbg_newwithbyteoffsetandlength_aa4a17c33a06e5cb = function(arg0, arg1, arg2) { + const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_randomFillSync_b70ccbdf4926a99d = function() { return handleError(function (arg0, arg1) { + getObject(arg0).randomFillSync(takeObject(arg1)); + }, arguments) }; + imports.wbg.__wbg_subarray_a1f73cd4b5b42fe1 = function(arg0, arg1, arg2) { + const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_getRandomValues_7e42b4fb8779dc6d = function() { return handleError(function (arg0, arg1) { + getObject(arg0).getRandomValues(getObject(arg1)); + }, arguments) }; + imports.wbg.__wbg_new_63b92bc8671ed464 = function(arg0) { + const ret = new Uint8Array(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_set_a47bac70306a19a7 = function(arg0, arg1, arg2) { + getObject(arg0).set(getObject(arg1), arg2 >>> 0); + }; + imports.wbg.__wbg_instanceof_Element_6945fc210db80ea9 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof Element; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_self_ce0dbfc45cf2f5be = function() { return handleError(function () { + const ret = self.self; + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_window_c6fb939a7f436783 = function() { return handleError(function () { + const ret = window.window; + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_globalThis_d1e6af4856ba331b = function() { return handleError(function () { + const ret = globalThis.globalThis; + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_global_207b558942527489 = function() { return handleError(function () { + const ret = global.global; + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbindgen_is_undefined = function(arg0) { + const ret = getObject(arg0) === undefined; + return ret; + }; + imports.wbg.__wbg_newnoargs_e258087cd0daa0ea = function(arg0, arg1) { + var v0 = getCachedStringFromWasm0(arg0, arg1); + const ret = new Function(v0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_call_27c0f87801dedf93 = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).call(getObject(arg1)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_wholeText_ba5b69444c4b8033 = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg1).wholeText; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }, arguments) }; + imports.wbg.__wbindgen_debug_string = function(arg0, arg1) { + const ret = debugString(getObject(arg1)); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbg_insertAdjacentElement_e9c01b603ba40a72 = function() { return handleError(function (arg0, arg1, arg2, arg3) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + const ret = getObject(arg0).insertAdjacentElement(v0, getObject(arg3)); + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_performance_3298a9628a5c8aa4 = function(arg0) { + const ret = getObject(arg0).performance; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_setAttribute_3c9f6c303b696daa = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + var v1 = getCachedStringFromWasm0(arg3, arg4); + getObject(arg0).setAttribute(v0, v1); + }, arguments) }; + imports.wbg.__wbg_setAttributeNS_b4f4460edccac457 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + var v1 = getCachedStringFromWasm0(arg3, arg4); + var v2 = getCachedStringFromWasm0(arg5, arg6); + getObject(arg0).setAttributeNS(v0, v1, v2); + }, arguments) }; + imports.wbg.__wbg_document_5100775d18896c16 = function(arg0) { + const ret = getObject(arg0).document; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbindgen_throw = function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }; + imports.wbg.__wbg_queueMicrotask_3cbae2ec6b6cd3d6 = function(arg0) { + const ret = getObject(arg0).queueMicrotask; + return addHeapObject(ret); + }; + imports.wbg.__wbg_resolve_b0083a7967828ec8 = function(arg0) { + const ret = Promise.resolve(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_then_0c86a60e8fcfe9f6 = function(arg0, arg1) { + const ret = getObject(arg0).then(getObject(arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_queueMicrotask_481971b0d87f3dd4 = function(arg0) { + queueMicrotask(getObject(arg0)); + }; + imports.wbg.__wbindgen_closure_wrapper87 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 23, __wbg_adapter_24); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_closure_wrapper961 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 23, __wbg_adapter_24); + return addHeapObject(ret); + }; + + return imports; +} + +function __wbg_init_memory(imports, maybe_memory) { + +} + +function __wbg_finalize_init(instance, module) { + wasm = instance.exports; + __wbg_init.__wbindgen_wasm_module = module; + cachedInt32Memory0 = null; + cachedUint8Memory0 = null; + + wasm.__wbindgen_start(); + return wasm; +} + +function initSync(module) { + if (wasm !== undefined) return wasm; + + const imports = __wbg_get_imports(); + + __wbg_init_memory(imports); + + if (!(module instanceof WebAssembly.Module)) { + module = new WebAssembly.Module(module); + } + + const instance = new WebAssembly.Instance(module, imports); + + return __wbg_finalize_init(instance, module); +} + +async function __wbg_init(input) { + if (wasm !== undefined) return wasm; + + if (typeof input === 'undefined') { + input = new URL('js-framework-benchmark-sauron_bg.wasm', import.meta.url); + } + const imports = __wbg_get_imports(); + + if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) { + input = fetch(input); + } + + __wbg_init_memory(imports); + + const { instance, module } = await __wbg_load(await input, imports); + + return __wbg_finalize_init(instance, module); +} + +export { initSync } +export default __wbg_init; diff --git a/frameworks/keyed/sauron-dev/bundled-dist/js-framework-benchmark-sauron_bg.wasm b/frameworks/keyed/sauron-dev/bundled-dist/js-framework-benchmark-sauron_bg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a7032ced77eab0fb20eb7a65db95ad23bf148b90 GIT binary patch literal 256870 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

5I5EDKiG1= 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 literal 0 HcmV?d00001 diff --git a/frameworks/keyed/sauron-dev/index.html b/frameworks/keyed/sauron-dev/index.html new file mode 100644 index 000000000..933bad5f2 --- /dev/null +++ b/frameworks/keyed/sauron-dev/index.html @@ -0,0 +1,16 @@ + + + + + Sauron + + + + +

+ + + diff --git a/frameworks/keyed/sauron-dev/package-lock.json b/frameworks/keyed/sauron-dev/package-lock.json new file mode 100644 index 000000000..10c382833 --- /dev/null +++ b/frameworks/keyed/sauron-dev/package-lock.json @@ -0,0 +1,171 @@ +{ + "name": "js-framework-benchmark-sauron", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "js-framework-benchmark-sauron", + "version": "0.1.0", + "license": "ISC", + "devDependencies": { + "cpr": "^3.0.1", + "rimraf": "^2.6.3" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cpr": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cpr/-/cpr-3.0.1.tgz", + "integrity": "sha512-Xch4PXQ/KC8lJ+KfJ9JI6eG/nmppLrPPWg5Q+vh65Qr9EjuJEubxh/H/Le1TmCZ7+Xv7iJuNRqapyOFZB+wsxA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.5", + "minimist": "^1.2.0", + "mkdirp": "~0.5.1", + "rimraf": "^2.5.4" + }, + "bin": { + "cpr": "bin/cpr" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + } + } +} diff --git a/frameworks/keyed/sauron-dev/package.json b/frameworks/keyed/sauron-dev/package.json new file mode 100644 index 000000000..218f2f438 --- /dev/null +++ b/frameworks/keyed/sauron-dev/package.json @@ -0,0 +1,26 @@ +{ + "name": "js-framework-benchmark-sauron", + "version": "0.1.0", + "description": "Benchmark for Sauron develop", + "license": "ISC", + "js-framework-benchmark": { + "frameworkVersion": "0.61.0-dev", + "frameworkHomeURL": "https://github.com/ivanceras/sauron", + "issues": [ + 1139 + ] + }, + "scripts": { + "build-prod": "echo This is a no-op. && echo Due to heavy dependencies, the generated javascript is already provided. && echo If you really want to rebuild from source use: && echo npm run build-prod-force", + "build-prod-force": "rustup target add wasm32-unknown-unknown && cargo install wasm-pack && npx build-prod-without-tools-install", + "build-prod-without-tools-install": "rimraf bundled-dist && wasm-pack build --release --target web --no-typescript --out-name js-framework-benchmark-sauron --out-dir bundled-dist && cpr index.html bundled-dist/index.html && (cd bundled-dist && rimraf .gitignore README.md package.json)" + }, + "repository": { + "type": "git", + "url": "https://github.com/krausest/js-framework-benchmark.git" + }, + "devDependencies": { + "rimraf": "^2.6.3", + "cpr": "^3.0.1" + } +} diff --git a/frameworks/keyed/sauron-dev/src/lib.rs b/frameworks/keyed/sauron-dev/src/lib.rs new file mode 100644 index 000000000..c7018fd0a --- /dev/null +++ b/frameworks/keyed/sauron-dev/src/lib.rs @@ -0,0 +1,256 @@ +use rand::prelude::*; +use sauron::*; +use std::cmp::min; +use sauron::dom::component; + +static ADJECTIVES: &[&str] = &[ + "pretty", + "large", + "big", + "small", + "tall", + "short", + "long", + "handsome", + "plain", + "quaint", + "clean", + "elegant", + "easy", + "angry", + "crazy", + "helpful", + "mushy", + "odd", + "unsightly", + "adorable", + "important", + "inexpensive", + "cheap", + "expensive", + "fancy", +]; + +static COLOURS: &[&str] = &[ + "red", "yellow", "blue", "green", "pink", "brown", "purple", "brown", "white", "black", + "orange", +]; + +static NOUNS: &[&str] = &[ + "table", "chair", "house", "bbq", "desk", "car", "pony", "cookie", "sandwich", "burger", + "pizza", "mouse", "keyboard", +]; + +#[derive(Clone, PartialEq)] +struct RowData { + id: usize, + label: String, + selected: bool, +} + +impl RowData { + fn new(id: usize, rng: &mut SmallRng) -> Self { + let adjective = *ADJECTIVES.choose(rng).unwrap(); + let colour = *COLOURS.choose(rng).unwrap(); + let noun = *NOUNS.choose(rng).unwrap(); + + let label = [adjective, colour, noun].join(" "); + + Self { id, label, selected: false } + } +} + +impl Component for RowData{ + type MSG = Msg; + type XMSG = (); + + fn update(&mut self, _msg: Msg) -> Effects { + Effects::none() + } + + fn view(&self) -> Node { + let id = self.id; + node! { + + { text(id) } + + { text(&self.label) } + + + + + + + + + } + } +} +struct App { + rows: Vec, + next_id: usize, + rng: SmallRng, +} + +impl App { + fn new() -> Self { + App { + rows: Vec::new(), + next_id: 1, + rng: SmallRng::from_entropy(), + } + } +} + +enum Msg { + Run(usize), + Add(usize), + Update(usize), + Clear, + Swap, + Remove(usize), + Select(usize), +} + +impl Application for App { + + type MSG = Msg; + + fn update(&mut self, msg: Msg) -> Cmd { + match msg { + Msg::Run(amount) => { + let rng = &mut self.rng; + let next_id = self.next_id; + let update_amount = min(amount, self.rows.len()); + for index in 0..update_amount { + self.rows[index] = RowData::new(next_id + index, rng); + } + self.rows.extend( + (update_amount..amount).map(|index| RowData::new(next_id + index, rng)), + ); + self.next_id += amount; + } + Msg::Add(amount) => { + let rng = &mut self.rng; + let next_id = self.next_id; + self.rows + .extend((0..amount).map(|index| RowData::new(next_id + index, rng))); + self.next_id += amount; + } + Msg::Update(step) => { + for index in (0..self.rows.len()).step_by(step) { + self.rows[index].label += " !!!"; + } + } + Msg::Clear => { + self.rows.clear(); + } + Msg::Swap => { + if self.rows.len() > 998 { + self.rows.swap(1, 998); + } + } + Msg::Remove(id) => { + if let Some(index) = self.rows.iter().position(|row| row.id == id) { + self.rows.remove(index); + } + } + Msg::Select(id) => { + for row in self.rows.iter_mut(){ + row.selected = row.id == id; + } + } + } + Cmd::none() + } + + fn view(&self) -> Node { + node! { +
+ { self.view_jumbotron() } + + + { for r in &self.rows { component(r) } } + +
+ +
+ } + } +} + +impl App { + fn view_jumbotron(&self) -> Node { + node! { +
+
+
+

Sauron

+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
+ } + } +} + +#[wasm_bindgen(start)] +pub fn start() { + let mount_el = sauron::document().query_selector("#main").unwrap().unwrap(); + Program::append_to_mount(App::new(), &mount_el); +}