b32 use_multi_threading : 1;
b32 generate_foreign_info : 1;
b32 generate_type_info : 1;
- b32 no_std : 1;
+ b32 no_core : 1;
b32 no_stale_code : 1;
b32 show_all_errors : 1;
"\t--syminfo <target_file> (DEPRECATED) Generates a symbol resolution information file. Used by onyx-lsp.\n"
"\t--lspinfo <target_file> Generates an LSP information file. Used by onyx-lsp.\n"
"\t--stack-trace Enable dynamic stack trace.\n"
- "\t--no-std Disable automatically including \"core/std\".\n"
+ "\t--no-core Disable automatically including \"core/module\".\n"
"\t--no-stale-code Disables use of `#allow_stale_code` directive\n"
"\t--no-type-info Disables generating type information\n"
"\t--generate-foreign-info Generate information for foreign blocks. Rarely needed, so disabled by default.\n"
.use_multi_threading = 0,
.generate_foreign_info = 0,
.generate_type_info = 1,
- .no_std = 0,
+ .no_core = 0,
.no_stale_code = 0,
.show_all_errors = 0,
else if (!strcmp(argv[i], "--no-type-info")) {
options.generate_type_info = 0;
}
- else if (!strcmp(argv[i], "--no-std")) {
- options.no_std = 1;
+ else if (!strcmp(argv[i], "--no-core")) {
+ options.no_core = 1;
}
else if (!strcmp(argv[i], "--no-stale-code")) {
options.no_stale_code = 1;
add_entities_for_node(NULL, (AstNode *) load_node, context.global_scope, NULL);
}
- if (!context.options->no_std) {
+ if (!context.options->no_core) {
entity_heap_insert(&context.entities, ((Entity) {
.state = Entity_State_Parse,
.type = Entity_Type_Load_File,
.package = NULL,
- .include = create_load(context.ast_alloc, "core/std"),
+ .include = create_load(context.ast_alloc, "core/module"),
}));
}
--- /dev/null
+package core
+
+use runtime
+
+
+#load "./alloc/alloc"
+#load "./memory/memory"
+
+#load "./container/array"
+#load "./container/avl_tree"
+#load "./container/map"
+#load "./container/list"
+#load "./container/iter"
+#load "./container/set"
+#load "./container/bucket_array"
+#load "./container/heap"
+#load "./container/pair"
+#load "./container/optional"
+#load "./container/result"
+#load "./container/slice"
+
+#load "./conv/conv"
+#load "./conv/format"
+#load "./conv/parse"
+
+#load "./math/math"
+#load "./random/random"
+
+#load "./hash/hash"
+#load "./hash/md5"
+#load "./hash/sha256"
+
+#load "./string/string"
+#load "./string/buffer"
+#load "./string/char_utils"
+#load "./string/string_pool"
+
+#load "./intrinsics/onyx"
+#load "./intrinsics/wasm"
+#load "./intrinsics/type_interfaces"
+#load "./intrinsics/atomics"
+
+#load "./io/io"
+#load "./io/stream"
+#load "./io/reader"
+#load "./io/writer"
+#load "./io/binary"
+#load "./io/binary_reader"
+
+#load "./runtime/build_opts"
+#load "./runtime/common"
+#load "./runtime/default_link_options"
+
+#load "./test/testing"
+
+#load "./time/time"
+#load "./time/date"
+
+#load "./misc/arg_parse"
+#load "./misc/method_ops"
+
+#load "./encoding/base64"
+#load "./encoding/hex"
+#load "./encoding/utf8"
+#load "./encoding/osad"
+#load_all "./encoding/json"
+
+#load "./runtime/common"
+
+#load "./doc/doc"
+
+#if runtime.platform.Supports_Files {
+ #load "./os/file"
+}
+
+#if runtime.platform.Supports_Directories {
+ #load "./os/dir"
+ #load "./os/path"
+}
+
+#if runtime.platform.Supports_Os {
+ #load "./os/os"
+}
+
+#if runtime.platform.Supports_Processes {
+ #load "./os/process"
+}
+
+
+#if runtime.platform.Supports_Networking {
+ #load "./net/net"
+ #load "./net/tcp"
+}
+
+#if runtime.platform.Supports_Type_Info {
+ #load "./runtime/info/helper"
+ #load "./io/stdio"
+ #load "./misc/any_utils"
+ #load "./encoding/csv"
+}
+
+#if runtime.platform.Supports_Threads && runtime.Multi_Threading_Enabled {
+ #load "./threads/thread"
+}
+
+#if runtime.platform.Supports_Env_Vars {
+ #load "./os/env"
+}
+
+#if runtime.platform.Supports_TTY {
+ #load "./os/tty"
+}
+
+#if runtime.Multi_Threading_Enabled {
+ #load "./sync/mutex"
+ #load "./sync/condition_variable"
+ #load "./sync/semaphore"
+ #load "./sync/barrier"
+ #load "./sync/once"
+}
+
+
+//
+// Load platform files
+//
+
+#if runtime.runtime == .Onyx {
+ #load "./runtime/platform/onyx/platform"
+}
+
+#if runtime.runtime == .Wasi {
+ #load "./runtime/platform/wasi/platform"
+}
+
+#if runtime.runtime == .Js {
+ #load "./runtime/platform/js/platform"
+}
// 3. Run the build file with the --generate-foreign-info flag enabled.
//
// Full example:
-// #load "core/std"
// #load "./module"
//
// use core {*}
+++ /dev/null
-package core
-
-use runtime
-
-
-#load "./alloc/alloc"
-#load "./memory/memory"
-
-#load "./container/array"
-#load "./container/avl_tree"
-#load "./container/map"
-#load "./container/list"
-#load "./container/iter"
-#load "./container/set"
-#load "./container/bucket_array"
-#load "./container/heap"
-#load "./container/pair"
-#load "./container/optional"
-#load "./container/result"
-#load "./container/slice"
-
-#load "./conv/conv"
-#load "./conv/format"
-#load "./conv/parse"
-
-#load "./math/math"
-#load "./random/random"
-
-#load "./hash/hash"
-#load "./hash/md5"
-#load "./hash/sha256"
-
-#load "./string/string"
-#load "./string/buffer"
-#load "./string/char_utils"
-#load "./string/string_pool"
-
-#load "./intrinsics/onyx"
-#load "./intrinsics/wasm"
-#load "./intrinsics/type_interfaces"
-#load "./intrinsics/atomics"
-
-#load "./io/io"
-#load "./io/stream"
-#load "./io/reader"
-#load "./io/writer"
-#load "./io/binary"
-#load "./io/binary_reader"
-
-#load "./runtime/build_opts"
-#load "./runtime/common"
-#load "./runtime/default_link_options"
-
-#load "./test/testing"
-
-#load "./time/time"
-#load "./time/date"
-
-#load "./misc/arg_parse"
-#load "./misc/method_ops"
-
-#load "./encoding/base64"
-#load "./encoding/hex"
-#load "./encoding/utf8"
-#load "./encoding/osad"
-#load_all "./encoding/json"
-
-#load "./runtime/common"
-
-#load "./doc/doc"
-
-#if runtime.platform.Supports_Files {
- #load "./os/file"
-}
-
-#if runtime.platform.Supports_Directories {
- #load "./os/dir"
- #load "./os/path"
-}
-
-#if runtime.platform.Supports_Os {
- #load "./os/os"
-}
-
-#if runtime.platform.Supports_Processes {
- #load "./os/process"
-}
-
-
-#if runtime.platform.Supports_Networking {
- #load "./net/net"
- #load "./net/tcp"
-}
-
-#if runtime.platform.Supports_Type_Info {
- #load "./runtime/info/helper"
- #load "./io/stdio"
- #load "./misc/any_utils"
- #load "./encoding/csv"
-}
-
-#if runtime.platform.Supports_Threads && runtime.Multi_Threading_Enabled {
- #load "./threads/thread"
-}
-
-#if runtime.platform.Supports_Env_Vars {
- #load "./os/env"
-}
-
-#if runtime.platform.Supports_TTY {
- #load "./os/tty"
-}
-
-#if runtime.Multi_Threading_Enabled {
- #load "./sync/mutex"
- #load "./sync/condition_variable"
- #load "./sync/semaphore"
- #load "./sync/barrier"
- #load "./sync/once"
-}
-
-
-//
-// Load platform files
-//
-
-#if runtime.runtime == .Onyx {
- #load "./runtime/platform/onyx/platform"
-}
-
-#if runtime.runtime == .Wasi {
- #load "./runtime/platform/wasi/platform"
-}
-
-#if runtime.runtime == .Js {
- #load "./runtime/platform/js/platform"
-}
or a *mapped directory* to use as the base directory.
For example, instead of relying on "/usr/share/onyx" to be in
-the search path to make "core/std" work, we would instead have
+the search path to make "core/module" work, we would instead have
"core" be a mapped directory to "/usr/share/onyx/core". Then,
-you would say, `#load "core:std"` or `#load core "std"` to
+you would say, `#load "core:module"` or `#load core "module"` to
specify the base path.
// option to disable loading the standard library, if that is needed. For the sake
// of completeness, the following line manually includes the standard library, but
// this is not necessary.
-#load "core/std"
+#load "core/module"
// Below is the function declaration for `main`. While it might look weird at first
// sight, Onyx uses a consistent syntax for declaring static "things" (functions,
-// Notice this time, we are not adding, 'package main' or '#load "core/std"'
+// Notice this time, we are not adding, 'package main' or '#load "core/module"'
// to the top of the file, since every file is automatically part of the
// main package unless specified otherwise, and every compilations includes
// the standard library.
// This file will give examples of all of these things, as well as some of the gotchas
// you need to be aware of.
-#load "core/std"
+#load "core/module"
use core {*}
// is a powerful construct to have. In fact, strings in Onyx, i.e.
// the 'str' type, is actually just a slice of u8.
-#load "core/std"
+#load "core/module"
use core {*}
// Dynamic arrays in Onyx are easy to use on purpose, because I
// know how useful they are in almost every program I write.
-#load "core/std"
+#load "core/module"
use core {*}
// 'structs' in Onyx are very similar to structs in C and C++, with a couple
// of additional capabilities to make using them even easier.
-#load "core/std"
+#load "core/module"
use core {*}
// expressions. This is going to improve in the future, but for the moment,
// enums are rather limited.
-#load "core/std"
+#load "core/module"
use core {*}
// in Onyx are extremely simple to use by design and should make programming very
// enjoyable. But I digress, let's look at some examples.
-#load "core/std"
+#load "core/module"
use core {package, *}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
// - 'variadic argument' is shortened to 'vararg' in many situtations
-#load "core/std"
+#load "core/module"
use core {*}
// most cases, but can easily break and require you to write the code without it. This
// is being address and hopefully in the next couple months it will be much more robust.
-#load "core/std"
+#load "core/module"
use core {*}
// Let's look at some examples of overloaded procedures and how they are resolved.
-#load "core/std"
+#load "core/module"
use core {*}
}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core { println }
-#load "core/std"
+#load "core/module"
use core {*}
// Operator overloading allows you to define what it means to perform
// }
}
-#load "core/std"
+#load "core/module"
use core {*}
}
-#load "core/std"
+#load "core/module"
use core {*}
println(arr);
}
-#load "core/std"
+#load "core/module"
use core {*}
println(val);
}
-#load "core/std"
+#load "core/module"
use core {*}
overloaded_procedure_example();
}
-#load "core/std"
+#load "core/module"
use core {*}
use core.intrinsics.onyx {*}
multiple_declaration_improvements();
}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {package, test}
-#load "core/std"
+#load "core/module"
#load "core/encoding/ini"
//
// - Fancy display
-
-#load "core/std"
-
use runtime
use core {package, *}
use core.intrinsics.onyx { init }
-#load "core/std"
+#load "core/module"
use core
use core.io
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {package, *}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
package main
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core.io
use core.os
PART :: 2
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
PART :: 2
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
PART :: 2
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core
use core.conv
-#load "core/std"
+#load "core/module"
#load "core/intrinsics/atomics"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
SomeNamespace :: struct {
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
package main
-#load "core/std"
+#load "core/module"
use core {*}
package main
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {package, println, printf}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core
use core.hash
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {package, *}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {printf, map}
// This is a needlessly complicated test of some of the newer features with structs.
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core
use core {println}
// This test does not make a whole ton of sense, but it does thoroughly test the #persist local capability.
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
use runtime.info
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core
use core.io
-#load "core/std"
+#load "core/module"
use core {*}
-#load "core/std"
+#load "core/module"
use core {*}
Person_Vtable :: struct {
-#load "core/std"
+#load "core/module"
use core {*}
package main
-#load "core/std"
+#load "core/module"
use core {*};