Skip to content

Commit

Permalink
rename flags for standard libraries
Browse files Browse the repository at this point in the history
hmsk committed Jun 19, 2024
1 parent 82841ea commit 36bcf13
Showing 3 changed files with 28 additions and 6 deletions.
22 changes: 22 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -36,6 +36,28 @@ Quickjs.evalCode('const obj = {}; obj.missingKey;') # => :undefined (Quickjs::Va
Quickjs.evalCode("Number('whatever')") #=> :NaN (Quickjs::Value::NAN)
```

#### Limit resources

```rb
# 1GB memory limit
Quickjs.evalCode(code, { memoryLimit: 1024 ** 3 })

# 1MB max stack size
Quickjs.evalCode(code, { memoryLimit: 1024 ** 2 })
```

#### Enable built-in modules

```rb
# enable std module
# https://bellard.org/quickjs/quickjs.html#std-module
Quickjs.evalCode(code, { features: [Quickjs::MODULE_STD] })

# enable os module
# https://bellard.org/quickjs/quickjs.html#os-module
Quickjs.evalCode(code, { features: [Quickjs::MODULE_OS] })
```

## License

Every file in `ext/quickjsrb/quickjs` is licensed under [the MIT License Copyright 2017-2021 by Fabrice Bellard and Charlie Goron](/ext/quickjsrb/quickjs/LICENSE).
8 changes: 4 additions & 4 deletions lib/quickjs.rb
Original file line number Diff line number Diff line change
@@ -5,8 +5,8 @@
require_relative "quickjs/quickjsrb"

module Quickjs
FEATURE_STD = :std
FEATURE_OS = :os
MODULE_STD = :std
MODULE_OS = :os

def evalCode(
code,
@@ -21,8 +21,8 @@ def evalCode(
code,
opts[:memoryLimit] || 1024 * 1024 * 128,
opts[:maxStackSize] || 1024 * 1024 * 4,
opts[:features].include?(Quickjs::FEATURE_STD),
opts[:features].include?(Quickjs::FEATURE_OS),
opts[:features].include?(Quickjs::MODULE_STD),
opts[:features].include?(Quickjs::MODULE_OS),
)
end
module_function :evalCode
4 changes: 2 additions & 2 deletions test/quickjs_test.rb
Original file line number Diff line number Diff line change
@@ -61,11 +61,11 @@ class QuickjsTestFeatures < Test::Unit::TestCase
end

test "std can be enabled" do
assert_equal(::Quickjs.evalCode("!!std.urlGet", { features: [::Quickjs::FEATURE_STD] }), true)
assert_equal(::Quickjs.evalCode("!!std.urlGet", { features: [::Quickjs::MODULE_STD] }), true)
end

test "os can be enabled" do
assert_equal(::Quickjs.evalCode("!!os.kill", { features: [::Quickjs::FEATURE_OS] }), true)
assert_equal(::Quickjs.evalCode("!!os.kill", { features: [::Quickjs::MODULE_OS] }), true)
end
end
end

0 comments on commit 36bcf13

Please sign in to comment.