Commit Graph

298 Commits

Author SHA1 Message Date
Stephen Chung
470af6af71 Using hashing for full hash instead of xor. 2022-11-04 21:59:49 +08:00
l1npengtul
876fd63dd3 remove unneeded feature 2022-11-01 01:01:04 +09:00
l1npengtul
bb01f914e0 Address concerns 2022-11-01 00:59:07 +09:00
l1npengtul
3e6a3a2759 Stable Hash: Add feature, adjust CI, modify build.rs, add new API for accessing and setting the ahash seed in config.rs, make config.rs public 2022-10-31 22:14:09 +09:00
Stephen Chung
45f0fdcbe0 no_std = no_time. 2022-10-15 15:11:51 +08:00
Stephen Chung
a6a570131a Add no_time. 2022-10-15 12:37:42 +08:00
Stephen Chung
38e47c909d Streamline code. 2022-10-14 14:04:54 +08:00
Stephen Chung
2ecf44a48e Remove stable_hash feature and use environment variable. 2022-09-27 13:23:47 +08:00
Stephen Chung
5d275b5307 Simplify to calc_fn_hash. 2022-09-21 11:46:23 +08:00
Stephen Chung
6bc98bd252 Remove extra clippy lints. 2022-08-27 16:29:39 +08:00
Stephen Chung
bf5d6ab35a Shut up clippy. 2022-08-27 16:26:41 +08:00
Stephen Chung
f323644e20 Fix tests. 2022-08-09 17:24:24 +08:00
Stephen Chung
68c11060d9 Merge branch 'main' of https://github.com/rhaiscript/rhai 2022-08-09 16:31:25 +08:00
Stephen Chung
47f02b96d7 Add top-level wrappers. 2022-08-08 09:10:15 +08:00
Stephen Chung
6fab9f5b63 Fix build. 2022-07-28 18:08:21 +08:00
Stephen Chung
87687ebf25 Gate definitions with internals feature. 2022-07-28 17:58:22 +08:00
Stephen Chung
39dee556c4 Clean up clippy. 2022-07-27 16:04:24 +08:00
Stephen Chung
0bf7baa502
Merge branch 'main' into feat-definitions 2022-07-26 21:18:01 +08:00
tamasfe
d350462cf8
chore: formatting 2022-07-26 14:18:43 +02:00
tamasfe
b00bf8535d
fix(defs): conditional compilation and refactors 2022-07-26 13:55:10 +02:00
tamasfe
b7b9ff29e4
feat: basic definitions 2022-07-25 19:01:06 +02:00
Stephen Chung
61056dfb24 Export is_valid_identifier and is_valid_function_name under internals. 2022-07-25 22:05:52 +08:00
Stephen Chung
5149c56256 Streamline switch case AST structure. 2022-07-19 13:33:53 +08:00
Stephen Chung
7dca916c45 Allow duplicated switch cases. 2022-07-18 13:40:41 +08:00
Stephen Chung
b4dbc7619a Add no_custom_syntax. 2022-07-05 22:59:03 +08:00
Stephen Chung
dee66a409f Add case alternatives for switch. 2022-07-04 17:42:24 +08:00
Stephen Chung
6ea5ed17f4 Use rhai for ignore. 2022-06-12 15:04:06 +08:00
Stephen Chung
e5f6b28abd Fix warnings. 2022-06-08 17:06:49 +08:00
Stephen Chung
6ebe002b18 Check for missing docs. 2022-06-05 18:17:44 +08:00
Stephen Chung
4194e2c048 Refine data structures. 2022-05-07 15:54:44 +08:00
Stephen Chung
c3d013bddc Add to_json for maps. 2022-04-21 12:15:21 +08:00
Stephen Chung
855cb76246 Rename EvalState to Caches. 2022-04-16 16:36:53 +08:00
Stephen Chung
1e4abd012c Minor refactor. 2022-03-09 09:25:55 +08:00
Stephen Chung
8bda8c64df Refine data structures 2022-03-05 17:57:23 +08:00
Stephen Chung
9ef522b699 Use SmartString in parsing. 2022-02-26 17:28:58 +08:00
Stephen Chung
8205547d8a Use bitflags. 2022-02-25 11:42:59 +08:00
Stephen Chung
fb9964e1a3 Revise on_def_var API. 2022-02-15 10:56:05 +08:00
Stephen Chung
3b9dbd5fce Add Span. 2022-02-08 23:01:47 +08:00
Stephen Chung
187a20fd8b Refactor OptimizationLevel. 2022-02-07 21:03:39 +08:00
Stephen Chung
becbfa8930 Fix errors. 2022-02-06 23:02:59 +08:00
Nathan Kent
86d86a85e4 Remove unsound casting functions
The casting functions in `unsafe.rs` were unsound (i.e., they allowed
safe code to cause undefined behavior). While they did appear to be used
in a way that wouldn't cause UB the fact that there exists unsound
functions is unsettling.

This commit removes those functions and replaces it with a macro that
performs the same reification - the difference is that the macro call
will also include the checks which are required to prevent UB. A macro
was chosen instead of a function for two reasons:

1. A macro can keep the same code generation whereas a function would
   require going through an `Option` which has negative impacts on code
   generation (niche values cause poor DCE).
2. There exist other `unsafe` code blocks in the crate and an attempt to
   make Rhai 100% safe is completely out-of-scope for this merge
   request, so we may as well use `unsafe` in the macro.

Regarding (2) above, I may come back at a later date with a 100% safe
`reify` function but only once the other `unsafe` blocks are removed.
For posterity, said function would look something like:

```rust
fn reify<A: Any, C>(value: A) -> Option<C> {
    let mut v = Some(value);
    let v: &mut dyn Any = &mut v;
    v.downcast_mut::<Option<C>>().map(Option::take)
}
```
2022-02-05 16:29:05 -08:00
Stephen Chung
345a060672 Fix type name display. 2022-02-03 23:54:53 +08:00
Stephen Chung
7163a7331a Add commands and status to debugging interface. 2022-02-01 22:30:05 +08:00
Stephen Chung
f1458e79e0 Improve AST debug display. 2022-01-31 13:38:27 +08:00
Stephen Chung
7b92a80c32 Fix encapsulated environment in module functions. 2022-01-30 17:27:13 +08:00
Stephen Chung
6b02dde848 Gate dead code for no_module. 2022-01-29 11:09:43 +08:00
Stephen Chung
20baae71d4 Factor tuples into structs to aid in understanding. 2022-01-28 10:11:40 +08:00
Stephen Chung
c8357de1c8 Fix feature builds. 2022-01-27 16:58:11 +08:00
Stephen Chung
3cec9751bf Remove call stack under no_function. 2022-01-27 16:58:11 +08:00
Stephen Chung
40aaab60c3 Refine debugger. 2022-01-27 16:58:11 +08:00