From 640471f865b7a534893ef6c4d4641e8be6f5e17a Mon Sep 17 00:00:00 2001 From: Stephen Chung Date: Wed, 14 Sep 2022 15:17:36 +0800 Subject: [PATCH] Revert "Enable capacity on packages." This reverts commit 85ca6ec4a1191802d6dd7cffde268914bc2d2b87. --- CHANGELOG.md | 5 ----- src/packages/arithmetic.rs | 2 +- src/packages/array_basic.rs | 2 +- src/packages/bit_field.rs | 2 +- src/packages/blob_basic.rs | 2 +- src/packages/iter_basic.rs | 2 +- src/packages/logic.rs | 2 +- src/packages/math_basic.rs | 2 +- src/packages/mod.rs | 25 ++++--------------------- src/packages/pkg_core.rs | 2 +- src/packages/pkg_std.rs | 2 +- src/packages/string_basic.rs | 2 +- src/packages/string_more.rs | 2 +- tests/packages.rs | 2 +- 14 files changed, 16 insertions(+), 38 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f3aea521..dca0c2d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,11 +12,6 @@ New features * [`Engine::register_custom_syntax_with_state_raw`] is added. The custom syntax parser and implementation functions take on an additional parameter that holds a user-defined custom _state_ which should substantially simplify writing some custom parsers. * [`Engine::register_custom_syntax_raw`] is deprecated. -### Initial capacity for packages - -* For packages that register a large number of functions, a syntax extension for `def_package!` allows the specification of the initial _capacity_ of the package to reduce reallocation costs. -* A `capacity` method is added to the `Package` trait. - Version 1.10.0 ============== diff --git a/src/packages/arithmetic.rs b/src/packages/arithmetic.rs index 34615564..2cba468e 100644 --- a/src/packages/arithmetic.rs +++ b/src/packages/arithmetic.rs @@ -191,7 +191,7 @@ macro_rules! reg_functions { def_package! { /// Basic arithmetic package. - pub ArithmeticPackage(lib @ 128) { + pub ArithmeticPackage(lib) { lib.standard = true; combine_with_exported_module!(lib, "int", int_functions); diff --git a/src/packages/array_basic.rs b/src/packages/array_basic.rs index d4cea6b6..21abbde9 100644 --- a/src/packages/array_basic.rs +++ b/src/packages/array_basic.rs @@ -13,7 +13,7 @@ use std::{any::TypeId, cmp::Ordering, mem}; def_package! { /// Package of basic array utilities. - pub BasicArrayPackage(lib @ 64) { + pub BasicArrayPackage(lib) { lib.standard = true; combine_with_exported_module!(lib, "array", array_functions); diff --git a/src/packages/bit_field.rs b/src/packages/bit_field.rs index ea5127b5..5deb09ce 100644 --- a/src/packages/bit_field.rs +++ b/src/packages/bit_field.rs @@ -9,7 +9,7 @@ use std::prelude::v1::*; def_package! { /// Package of basic bit-field utilities. - pub BitFieldPackage(lib @ 16) { + pub BitFieldPackage(lib) { lib.standard = true; combine_with_exported_module!(lib, "bit_field", bit_field_functions); diff --git a/src/packages/blob_basic.rs b/src/packages/blob_basic.rs index 8e6a1ba1..a3bbd532 100644 --- a/src/packages/blob_basic.rs +++ b/src/packages/blob_basic.rs @@ -15,7 +15,7 @@ use crate::{FLOAT, FLOAT_BYTES}; def_package! { /// Package of basic BLOB utilities. - pub BasicBlobPackage(lib @ 64) { + pub BasicBlobPackage(lib) { lib.standard = true; combine_with_exported_module!(lib, "blob", blob_functions); diff --git a/src/packages/iter_basic.rs b/src/packages/iter_basic.rs index 97a1c016..6ec293cc 100644 --- a/src/packages/iter_basic.rs +++ b/src/packages/iter_basic.rs @@ -326,7 +326,7 @@ macro_rules! reg_range { def_package! { /// Package of basic range iterators - pub BasicIteratorPackage(lib @ 64) { + pub BasicIteratorPackage(lib) { lib.standard = true; reg_range!(lib | "range" => INT); diff --git a/src/packages/logic.rs b/src/packages/logic.rs index da08b0d5..af494f00 100644 --- a/src/packages/logic.rs +++ b/src/packages/logic.rs @@ -37,7 +37,7 @@ macro_rules! reg_functions { def_package! { /// Package of basic logic operators. - pub LogicPackage(lib @ 128) { + pub LogicPackage(lib) { lib.standard = true; #[cfg(not(feature = "only_i32"))] diff --git a/src/packages/math_basic.rs b/src/packages/math_basic.rs index 595e6464..f7c3c40f 100644 --- a/src/packages/math_basic.rs +++ b/src/packages/math_basic.rs @@ -53,7 +53,7 @@ macro_rules! reg_functions { def_package! { /// Basic mathematical package. - pub BasicMathPackage(lib @ 128) { + pub BasicMathPackage(lib) { lib.standard = true; // Integer functions diff --git a/src/packages/mod.rs b/src/packages/mod.rs index 6337a0b1..ab4df033 100644 --- a/src/packages/mod.rs +++ b/src/packages/mod.rs @@ -53,14 +53,6 @@ pub trait Package { #[allow(unused_variables)] fn init_engine(engine: &mut Engine) {} - /// Number of functions expected by the package. - /// - /// This capacity only acts as a hint. It may not be precise. - #[allow(unused_variables)] - fn capacity() -> usize { - 16 - } - /// Register the package with an [`Engine`]. /// /// # Example @@ -128,7 +120,7 @@ pub trait Package { /// ``` #[macro_export] macro_rules! def_package { - ($($(#[$outer:meta])* $mod:vis $package:ident($lib:ident $(@ $capacity:expr)?) + ($($(#[$outer:meta])* $mod:vis $package:ident($lib:ident) $( : $($(#[$base_meta:meta])* $base_pkg:ty),+ )? $block:block $( |> | $engine:ident | $init_engine:block )? @@ -144,7 +136,7 @@ macro_rules! def_package { #[inline] fn init($lib: &mut $crate::Module) { $($( - $(#[$base_meta])* <$base_pkg>::init($lib); + $(#[$base_meta])* { <$base_pkg>::init($lib); } )*)* $block @@ -152,7 +144,7 @@ macro_rules! def_package { #[inline] fn init_engine(_engine: &mut $crate::Engine) { $($( - $(#[$base_meta])* <$base_pkg>::init_engine(_engine); + $(#[$base_meta])* { <$base_pkg>::init_engine(_engine); } )*)* $( @@ -160,15 +152,6 @@ macro_rules! def_package { $init_engine )* } - #[inline(always)] - fn capacity() -> usize { - let mut _capacity = 16; - $(_capacity = $capacity;)? - $($( - $(#[$base_meta])* { _capacity += <$base_pkg>::capacity(); } - )*)* - _capacity - } } impl Default for $package { @@ -183,7 +166,7 @@ macro_rules! def_package { #[inline] #[must_use] pub fn new() -> Self { - let mut module = $crate::Module::with_capacity(::capacity()); + let mut module = $crate::Module::new(); ::init(&mut module); module.build_index(); Self(module.into()) diff --git a/src/packages/pkg_core.rs b/src/packages/pkg_core.rs index 815c2a56..547274cd 100644 --- a/src/packages/pkg_core.rs +++ b/src/packages/pkg_core.rs @@ -15,7 +15,7 @@ def_package! { /// * [`BasicIteratorPackage`][super::BasicIteratorPackage] /// * [`BasicFnPackage`][super::BasicFnPackage] /// * [`DebuggingPackage`][super::DebuggingPackage] - pub CorePackage(lib @ 0) : + pub CorePackage(lib) : LanguageCorePackage, ArithmeticPackage, BasicStringPackage, diff --git a/src/packages/pkg_std.rs b/src/packages/pkg_std.rs index e7878bfd..e7d4f1ff 100644 --- a/src/packages/pkg_std.rs +++ b/src/packages/pkg_std.rs @@ -18,7 +18,7 @@ def_package! { /// * [`BasicMapPackage`][super::BasicMapPackage] /// * [`BasicTimePackage`][super::BasicTimePackage] /// * [`MoreStringPackage`][super::MoreStringPackage] - pub StandardPackage(lib @ 0) : + pub StandardPackage(lib) : CorePackage, BitFieldPackage, LogicPackage, diff --git a/src/packages/string_basic.rs b/src/packages/string_basic.rs index 41a00893..d8c3845a 100644 --- a/src/packages/string_basic.rs +++ b/src/packages/string_basic.rs @@ -16,7 +16,7 @@ pub const FUNC_TO_DEBUG: &str = "to_debug"; def_package! { /// Package of basic string utilities (e.g. printing) - pub BasicStringPackage(lib @ 128) { + pub BasicStringPackage(lib) { lib.standard = true; combine_with_exported_module!(lib, "print_debug", print_debug_functions); diff --git a/src/packages/string_more.rs b/src/packages/string_more.rs index b40dc214..da53a127 100644 --- a/src/packages/string_more.rs +++ b/src/packages/string_more.rs @@ -11,7 +11,7 @@ use super::string_basic::{print_with_func, FUNC_TO_STRING}; def_package! { /// Package of additional string utilities over [`BasicStringPackage`][super::BasicStringPackage] - pub MoreStringPackage(lib @ 64) { + pub MoreStringPackage(lib) { lib.standard = true; combine_with_exported_module!(lib, "string", string_functions); diff --git a/tests/packages.rs b/tests/packages.rs index d728b4f9..49e9f27a 100644 --- a/tests/packages.rs +++ b/tests/packages.rs @@ -7,7 +7,7 @@ use rhai::{def_package, Engine, EvalAltResult, Module, Scope, INT}; fn test_packages() -> Result<(), Box> { def_package! { /// My custom package. - MyPackage(m @ 32) : SSS { + MyPackage(m) : SSS { m.set_native_fn("hello", |x: INT| Ok(x + 1)); m.set_native_fn("@", |x: INT, y: INT| Ok(x * x + y * y)); } |> |engine| {