Commit Graph

4001 Commits

Author SHA1 Message Date
gingerBill
42678848b2 Rename math/bits package name to math_bits 2019-12-31 12:27:31 +00:00
gingerBill
ab52f8d795 Move definition of mem.Allocator and log.Logger to package runtime, to reduce import cycle magic 2019-12-31 12:15:19 +00:00
Scitoshi Nakayobro
d79ee7d530 Implement dynlib core library for unix/darwin; not 100% about the build tags 2019-12-30 19:09:59 -05:00
gingerBill
f24de51c65 Add _tls_index and _fltused for windows -no-crt 2019-12-29 21:28:50 +00:00
gingerBill
2252d992d7 Add -disable-assert to disable the code generation of the built-in run-time 'assert' procedure 2019-12-29 21:10:27 +00:00
gingerBill
2d70a784d1 Add quaternion_look_at orientation procedure to package math/linalg 2019-12-29 20:35:27 +00:00
gingerBill
a8a4dc1eb1 Make default context.temp_allocator thread safe when using package thread 2019-12-29 18:08:48 +00:00
gingerBill
8ee41c20af Add more to package math 2019-12-28 23:48:15 +00:00
gingerBill
11c705508d Split linalg into general and specific parts 2019-12-28 23:09:43 +00:00
gingerBill
1bc6e6a7cc Add linalg.vector_lerp, linalg.vector_unlerp 2019-12-28 23:07:31 +00:00
gingerBill
33a458c520 Update package math/linalg 2019-12-28 23:00:13 +00:00
gingerBill
6a7ccd8c0a Add new procedures for package math: atan2, asin, acos, atan, sin_bit, ldexp 2019-12-28 18:12:27 +00:00
gingerBill
880c7f01a8 Fix array lengths with enum value counts. 2019-12-27 13:55:18 +00:00
gingerBill
10f0961184 Enumerated arrays [Enum_Type]Elem_Type 2019-12-27 12:51:02 +00:00
Patric Dexheimer
ff0bc3ccad minor details ;) 2019-12-24 11:50:26 -03:00
gingerBill
072979c6d2 Merge pull request #519 from Tetralux/remove-prints
remove errorneous prints
2019-12-24 12:54:00 +00:00
Tetralux
a3d2c40da0 whoops 2019-12-24 12:51:27 +00:00
gingerBill
5b1312342e Fix runtime.mem_copy_non_overlapping to be like C's memcpy 2019-12-24 08:07:43 +00:00
gingerBill
85e31e1b69 Fix os.open 2019-12-23 18:10:09 +00:00
Justas Dabrila
38a9a2b7fc Linux: write_entire_file sets 644 permissions on open. 2019-12-23 16:35:10 +02:00
Justas Dabrila
005c6af302 Fix improper _unix_open binding that was ignoring the mode arg 2019-12-23 16:34:20 +02:00
gingerBill
1d14b3059e Fix Internal Compiler Error: Type_Info for 'XXX' could not be found #507 2019-12-22 14:16:56 +00:00
gingerBill
cc2fa8f756 Fix thread/thread_unix.odin to use the new switch conventions 2019-12-22 12:11:54 +00:00
gingerBill
d1c9fd4e01 Implement #complete switch by default, replace with #partial switch #511 2019-12-22 12:03:48 +00:00
gingerBill
7267004a55 Remove import "core:runtime" in integers.odin to make -vet happy 2019-12-22 10:28:48 +00:00
gingerBill
81b24594ce Add udivmod128.odin 2019-12-21 19:49:09 +00:00
gingerBill
08392d885e Add strconv/integers.odin 2019-12-21 14:01:29 +00:00
gingerBill
d462dbb5be Deprecate using import 2019-12-21 12:11:16 +00:00
gingerBill
494b1e7eaa Add -help which prints information about the compiler flags 2019-12-21 11:22:46 +00:00
Tetralux
c9723e2dc0 Fix mem.Arena 2019-12-15 21:36:40 +00:00
gingerBill
58d4d424c6 Replace #vector[N]T with #simd[N]T to reduce confusion #498 2019-12-15 11:30:09 +00:00
gingerBill
89ccb5b99f Add assert into scratch_allocator_proc to prevent initialization cycles #504 2019-12-15 11:20:06 +00:00
Justas Dabrila
95d3f43e15 Fix 'string_to_enum_value' not compiling 2019-12-14 01:08:47 +02:00
vassvik
2d97e1dee3 Fix NaN checks in core:math.classify
Currently the classify procedures checks for NaNs using the check `x != x`, which is always false for NaNs and therefore that case is never entered. Using `!(x == x)` will work on the other hand.
2019-12-12 19:12:12 +01:00
Mikkel Hjortshoej
851118faf4 Fix #399 by removing unused parameter 2019-12-08 02:09:03 +01:00
gingerBill
f170648629 Fix issue with -thread-count flag with <= 0 count 2019-12-03 18:23:14 +00:00
gingerBill
42def957d5 Fix append_elem_string, again 2019-12-03 09:35:24 +00:00
gingerBill
6433a0d31e Fix append_elem_string 2019-12-03 09:16:11 +00:00
gingerBill
359e5d9e15 Fix append_elem_string 2019-12-03 09:07:15 +00:00
gingerBill
ee78374281 Fix typo 2019-12-01 18:57:43 +00:00
gingerBill
ebe152a155 Disable aligned heap allocations hack in os.heap_allocator_proc 2019-12-01 18:53:27 +00:00
gingerBill
6b5ea011e7 Add strings.ptr_from_string 2019-12-01 18:06:49 +00:00
gingerBill
9503440eb0 Add strings.unsafe_string_to_cstring 2019-12-01 17:45:07 +00:00
gingerBill
9db81498d8 Make the string type elements "immutable", akin to char const * in C
Allows for extra security and optimization benefits
2019-12-01 14:10:59 +00:00
gingerBill
7fbe0a6f23 Fix nil comparisons for soa slices and dynamic arrays 2019-12-01 11:56:08 +00:00
Tetralux
99121d6ff2 Implement core:thread and core:sync on Unix using pthreads
Also do some cleanup and refactoring of the thread, sync and time APIs.

- remove 'semaphore_release' because 'post' and 'wait' is easier to understand

- change 'semaphore_wait' to '*_wait_for' to match Condition

- pthreads can be given a stack, but doing so requires the user to set up the guard
  pages manually. BE WARNED. The alignment requirements of the stack are also
  platform-dependant; it may need to be page size aligned on some systems.
  Unclear which systems, however. See 'os.get_page_size', and 'mem.make_aligned'.
  HOWEVER: I was unable to get custom stacks with guard pages working reliably,
  so while you can do it, the API does not support it.

- add 'os.get_page_size', 'mem.make_aligned', and 'mem.new_aligned'.

- removed thread return values because windows and linux are not consistent; windows returns 'i32'
  and pthreads return 'void*'; besides which, if you really wanted to communicate how the
  thread exited, you probably wouldn't do it with the thread's exit code.

- fixed 'thread.is_done' on Windows; it didn't report true immediately after calling 'thread.join'.

- moved time related stuff out of 'core:os' to 'core:time'.

- add 'mem.align_backward'

- fixed default allocator alignment
  The heap on Windows, and calloc on Linux, both have no facility to request alignment.
  It's a bit of hack, but the heap_allocator now overallocates; `size + alignment` bytes,
  and aligns things to at least 2.
  It does both of these things to ensure that there is at least two bytes before the payload,
  which it uses to store how much padding it needed to insert in order to fulfil the alignment
  requested.

- make conditions more sane by matching the Windows behaviour.
  The fact that they were signalled now lingers until a thread tries to wait,
  causing them to just pass by uninterrupted, without sleeping or locking the
  underlying mutex, as it would otherwise need to do.
  This means that a thread no longer has to be waiting in order to be signalled, which
  avoids timing bugs that causes deadlocks that are hard to debug and fix.
  See the comment on the `sync.Condition.flag` field.

- add thread priority: `thread.create(worker_proc, .High)`
2019-12-01 00:46:23 +00:00
gingerBill
b75d59d6e0 Make sort.merge_sort in place; Add sort.heap_sort 2019-11-27 16:06:07 +00:00
gingerBill
71c8a3456e Update package odin/parser for #soa and #vector 2019-11-27 15:23:54 +00:00
Mikkel Hjortshøj
53f65224f6 Merge pull request #459 from zhibog/master
Base32 added for core:encoding
2019-11-26 19:45:52 +01:00
gingerBill
902d313c6a Fix issue with os.write on *nix with writing nothing 2019-11-24 10:08:08 +00:00