Skip to content

Instantly share code, notes, and snippets.

@yhara
Last active February 20, 2022 12:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yhara/07a9dfc003a503cf4a6d32e46677501b to your computer and use it in GitHub Desktop.
Save yhara/07a9dfc003a503cf4a6d32e46677501b to your computer and use it in GitHub Desktop.
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();
/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
function bs_eval(s){
return eval(s);
}
export default bs_eval;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment