1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
# PACKAGE METADATA
[]
= "wright"
= "The wright programming language compiler and tooling."
= "MIT"
= "0.10.1"
= ["Venus Xeon-Blonde <venusflameblonde@gmail.com>"]
= "https://github.com/vcfxb/wright-lang"
= "https://docs.rs/wright"
= "../README.md"
= ["wright", "language", "bytecode", "compiler", "interpreter"]
= true
= true
# DOC.RS SPECIFIC METADATA
[]
= ["wright_library_defaults"]
# CRATES.IO BADGES
[]
= { = "actively-developed"}
# LIBRARY METADATA
[]
= "wright"
= true
= true
= true
# BINARIES
[[]]
= "wright"
= false
= false
= false
= []
# BENCHMARKS
[[]]
= "lexer"
= false
[[]]
= "parser"
= false
# FEATURE FLAGS
# These are used to determine which parts of the crate are compiled/available.
[]
# By default include everything required for building the wright binary, which includes everything used for building
# wright as a library.
# Also include support for detecting unicode capabilities on the host terminal.
= [
"wright_binary",
"supports-unicode"
]
# Features and dependencies required for the wright binary (currently just the library defaults and `clap`).
= [
"wright_library_defaults",
"dep:clap"
]
# Features and dependencies useful when the wright binary is not being built or used.
= [
"file_memmap",
"parser"
]
# Wright's parser depends on the ability to report parsing errors and construct AST models.
= [
"reporting",
"ast-models",
"lexer"
]
# Wright's abstract syntax tree model is built on types from the "source_tracking" module.
= [
"source-tracking",
"dep:num"
]
# Wright's lexical analyzer is build using types from the "source_tracking" module.
= [
"source-tracking",
"dep:unicode-ident"
]
# Loading memory mapped files from the disk requires memmap2, fs4, and the reporting feature to correctly and efficiently
# read from disk. We also use `anyhow` to make error handling easier.
= [
"reporting",
"dep:memmap2",
"dep:fs4"
]
# Reporting errors requires source tracking, codespan-reporting (for rendering diagnostics), and
# termcolor (for pretty output).
= [
"source-tracking",
"dep:termcolor",
"dep:codespan-reporting"
]
# Source tracking requires just a few dependencies and standard library.
= [
"std",
"dep:dashmap",
"derive_more/display",
]
# Optional dependency that enables terminal unicode support selection.
# There are fallbacks -- this is not required for anything else.
= [
"dep:supports-unicode"
]
# Feature flag to indicate use of the standard library.
= [
"derive_more?/std"
]
# Feature flag indicating no features are enabled.
= []
# SIMPLE DEPENDENCIES:
[]
# DEPENDENCIES:
# Use supports-unicode to determine how we display tokens to the user in debug commands.
# Optional -- can be used in debugging token outputs.
[]
= "3.0.0"
= true
# Num gives us integer types of unbound size/domain.
# Used in AST node representations for integer literals.
[]
= "0.4"
= true
# Unicode identifier functions.
# Used by:
# - "parser"
[]
= "1.0"
= true
# derive_more is used for allowing us to derive additional traits like From and Display.
# Currently used by features:
# - "source-tracking"
[]
= "2"
= false
= true
# dashmap is used as a fast, concurrent hash map implementation
# Optional since it's used for source tracking, which can be turned off.
[]
= "6.0.1"
= ["rayon"]
= true
# codespan-reporting is the internal engine used to render diagnostics.
# Optional since it's only used when error reporting is required.
[]
= "0.11.1"
= true
# Terminal output colors
# Optional: Required for reporting.
[]
= "1.4.1"
= true
# Memory mapped files.
# Optional: Required for memmory mapped file access.
[]
= "0.9.3"
= true
# Portable (windows, mac, linux) file locking
# Optional: Required for memmory mapped file access.
[]
= "0.12.0"
= ["sync"]
= true
# Comand-line interface generator
# Optional: Used only by the wright binary.
[]
= "4"
= ["derive"]
= true
# TODO: LLVM has been removed until I'm actually using it and have a better build system to go against it.
# (currently the state of it breaking docs.rs builds and complicating everything else makes me kinda sad).
# # Unsafe bindings to LLVM
# # See https://llvm.org/.
# # Optional: Currently not required by anything yet.
# [dependencies.llvm-sys]
# version = "181"
# features = ["force-static"]
# optional = true
# TEST DEPENDENCIES
[]
# Criterion is used for benchmarking.
= "0.5.1"
# Rayon is used to do various brute-force tests in parallel
= "1.8.0"
# indoc is used for indentation in tests
= "2.0.5"
# For creating in memory buffers to test reporting.
= "1.4.1"
# BUILD DEPENDENCIES
[]
# Used for showing feature/cfg info on rustdoc/docs.rs.
= "0.4.0"
# Used for capturing build time and platform information and making it available at runtime.
= "0.7"