Last active
February 20, 2022 12:32
-
-
Save yhara/07a9dfc003a503cf4a6d32e46677501b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/package.json b/package.json | |
index 2591ad0..5972b3c 100644 | |
--- a/package.json | |
+++ b/package.json | |
@@ -22,6 +22,8 @@ | |
"optparse": "1.0.5" | |
}, | |
"devDependencies": { | |
+ "@biwascheme/eval": "file:./src/bs_eval", | |
+ "@rollup/plugin-node-resolve": "^13.1.3", | |
"@rollup/plugin-replace": "^2.3.4", | |
"body-parser": "^1.19.0", | |
"express": "^4.17.1", | |
diff --git a/rollup.config.js b/rollup.config.js | |
index 82fcdcd..54a8d2e 100644 | |
--- a/rollup.config.js | |
+++ b/rollup.config.js | |
@@ -4,6 +4,7 @@ import { terser } from "rollup-plugin-terser"; | |
import replace from "@rollup/plugin-replace"; | |
import child_process from "child_process"; | |
import package_json from "./package.json" | |
+import resolve from '@rollup/plugin-node-resolve'; | |
const banner = `/* | |
* BiwaScheme __DEVELOPMENT__ - R6RS/R7RS Scheme in JavaScript | |
@@ -25,7 +26,7 @@ let replaceVersion = () => | |
export default [ | |
{ | |
- plugins: [prettier({ parser: "babel" }), replaceVersion()], | |
+ plugins: [resolve(), prettier({ parser: "babel" }), replaceVersion()], | |
input: "src/main-node.js", | |
output: [ | |
{ | |
@@ -38,7 +39,7 @@ export default [ | |
}, | |
{ | |
input: "src/main-browser.js", | |
- plugins: [prettier({ parser: "babel" }), replaceVersion()], | |
+ plugins: [resolve(), prettier({ parser: "babel" }), replaceVersion()], | |
output: [ | |
{ | |
file: "release/biwascheme.js", | |
diff --git a/src/library/js_interface.js b/src/library/js_interface.js | |
index 8ad2489..681ffbe 100644 | |
--- a/src/library/js_interface.js | |
+++ b/src/library/js_interface.js | |
@@ -12,12 +12,13 @@ import Interpreter from "../system/interpreter.js" | |
import { Pair, isList, array_to_list, js_obj_to_alist, alist_to_js_obj } from "../system/pair.js" | |
import Pause from "../system/pause.js" | |
import { BiwaSymbol, Sym } from "../system/symbol.js" | |
+import bs_eval from "@biwascheme/eval"; | |
// | |
// interface to javascript | |
// | |
define_libfunc("js-eval", 1, 1, function(ar){ | |
- return eval(ar[0]); | |
+ return bs_eval(ar[0]); | |
}); | |
define_libfunc("js-ref", 2, 2, function(ar){ | |
if(typeof ar[1] === "string" || Number.isInteger(ar[1])){ | |
@@ -75,7 +76,7 @@ define_libfunc("js-invocation", 2, null, function(ar, intp){ | |
var receiver = ar.shift(); | |
// TODO: convert lambdas by js-closure | |
if(isSymbol(receiver)){ | |
- receiver = eval(receiver.name); //XXX: is this ok? | |
+ receiver = bs_eval(receiver.name); //XXX: is this ok? | |
} | |
var v = receiver; | |
@@ -162,7 +163,7 @@ define_libfunc("js-new", 1, null, function(ar, intp){ | |
}; | |
var ctor = ar.shift(); | |
- if (typeof ctor === "string") ctor = eval(ctor); | |
+ if (typeof ctor === "string") ctor = bs_eval(ctor); | |
if(ar.length == 0){ | |
return new ctor(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/Users/yhara/Dropbox/proj/biwascheme % rollup -c | |
src/main-node.js → release/node_biwascheme.js... | |
(!) Circular dependencies | |
src/system/_writer.js -> src/system/pair.js -> src/system/_writer.js | |
src/system/_writer.js -> src/system/pair.js -> src/system/set.js -> src/system/error.js -> src/system/_writer.js | |
(!) Use of eval is strongly discouraged | |
https://rollupjs.org/guide/en/#avoiding-eval | |
src/bs_eval/index.mjs | |
1: function bs_eval(s){ | |
2: return eval(s); | |
^ | |
3: } | |
4: export default bs_eval; | |
created release/node_biwascheme.js in 3.9s | |
src/main-browser.js → release/biwascheme.js, release/biwascheme-min.js, release/biwascheme.mjs... | |
(!) Circular dependencies | |
src/system/_writer.js -> src/system/pair.js -> src/system/_writer.js | |
src/system/_writer.js -> src/system/pair.js -> src/system/set.js -> src/system/error.js -> src/system/_writer.js | |
(!) Use of eval is strongly discouraged | |
https://rollupjs.org/guide/en/#avoiding-eval | |
src/bs_eval/index.mjs | |
1: function bs_eval(s){ | |
2: return eval(s); | |
^ | |
3: } | |
4: export default bs_eval; | |
created release/biwascheme.js, release/biwascheme-min.js, release/biwascheme.mjs in 12.6s | |
rollup -c 19.94s user 1.18s system 121% cpu 17.336 total |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function bs_eval(s){ | |
return eval(s); | |
} | |
export default bs_eval; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"main": "index.mjs" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment