Commit Graph

60 Commits

Author SHA1 Message Date
Andrew Kelley
8766821157 rework std.math.big.Int
Now there are 3 types:
 * std.math.big.int.Const
   - the memory is immutable, only stores limbs and is_positive
   - all methods operating on constant data go here
 * std.math.big.int.Mutable
   - the memory is mutable, stores capacity in addition to limbs and
     is_positive
   - methods here have some Mutable parameters and some Const
     parameters. These methods expect callers to pre-calculate the
     amount of resources required, and asserts that the resources are
     available.
 * std.math.big.int.Managed
   - the memory is mutable and additionally stores an allocator.
   - methods here perform the resource calculations for the programmer.
   - this is the high level abstraction from before

Each of these 3 types can be converted to the other ones.

You can see the use case for this in the self-hosted compiler, where we
only store limbs, and construct the big ints as needed.

This gets rid of the hack where the allocator was optional and the
notion of "fixed" versions of the struct. Such things are now modeled
with the `big.int.Const` type.
2020-05-01 06:47:56 -04:00
Tadeo Kondrak
350b2adacd std.meta.IntType -> std.meta.Int 2020-04-28 19:11:31 -06:00
Tadeo Kondrak
f977155fdb @Vector -> std.meta.Vector 2020-04-28 00:47:13 -06:00
Timon Kruiper
c829f2f7b7 Add mips support to standard library 2020-04-24 15:28:55 -04:00
markfirmware
203d6554b1 Update fmt.zig 2020-04-03 12:12:40 -04:00
Andrew Kelley
53b5aa812b Merge remote-tracking branch 'origin/master' into llvm10 2020-03-19 22:19:24 -04:00
Andrew Kelley
7fa88cc0a6 std lib fixups for new semantics
std lib tests are passing now
2020-03-19 09:53:55 -04:00
Andrew Kelley
656ba530d8 Merge remote-tracking branch 'origin/master' into llvm10 2020-03-13 15:17:53 -04:00
Andrew Kelley
4905102901 fix all the TODOs from the pull request
* `std.Buffer.print` is removed; use `buffer.outStream().print`
 * `std.fmt.count` returns a `u64`
 * `std.Fifo.print` is removed; use `fifo.outStream().print`
 * `std.fmt.bufPrint` error is renamed from `BufferTooSmall`
   to `NoSpaceLeft` to match `std.os.write`.
 * `std.io.FixedBufferStream.getWritten` returns mutable buffer
   if the buffer is mutable.
2020-03-13 12:02:58 -04:00
Benjamin Feng
4aae55b4cc Replace fmt with new fmtstream 2020-03-12 10:41:09 -05:00
Michael Dusan
83f6f730cd std: simplify format enum-literals 2020-03-10 18:09:41 -04:00
Andrew Kelley
96c07674fc Merge remote-tracking branch 'origin/master' into llvm10 2020-03-07 12:18:41 -05:00
daurnimator
4114b63d75 std: use std.ArrayList instead of std.Buffer in std/fmt.zig tests 2020-03-06 18:49:13 -05:00
Michael Dusan
1091fee242 std: format enum-literals 2020-03-05 16:03:12 -05:00
daurnimator
488ba1560f std: fix math.absCast on i1 2020-03-05 16:00:19 +11:00
daurnimator
4f58bfe1a8 std: fix formatting of i1 integers 2020-03-05 15:52:19 +11:00
daurnimator
d5359ea541 std: use testing.expectEqualSlices from tests 2020-03-05 15:51:21 +11:00
Andrew Kelley
d1cb16aace Merge remote-tracking branch 'origin/master' into llvm10 2020-03-03 09:44:13 -05:00
Andrew Kelley
ef3d761da5 breaking: std.mem.len no longer takes a type argument
also update fmt code to use std.mem.span.
2020-03-01 13:21:39 -05:00
daurnimator
0b0de22fd1 std: format contents of sentinel terminated many pointers
std: add std.meta.Sentinel to get sentinel of a type
2020-03-01 13:04:29 -05:00
Vexu
22432b15e3 add test for @intToEnum 2020-02-26 11:19:40 -05:00
Andrew Kelley
f33bf48af7 Merge remote-tracking branch 'origin/master' into llvm10 2020-02-25 16:30:40 -05:00
Vexu
538d9a5dd8 remove uses of @ArgType and @IntType 2020-02-24 23:39:03 +02:00
Vexu
45da72c5b6 remove usages of @typeId, @memberCount, @memberName and @memberType 2020-02-24 23:09:01 +02:00
frmdstryr
597648231b Format decmial 0.0 with no precision as just 0 2020-02-23 11:17:06 -05:00
Andrew Kelley
64365bc5d7 enable behavior and std lib tests for RISC-V 64-bit
closes #3338
2020-02-17 00:06:19 -05:00
Andrew Kelley
cdba521a06 annotate skipped test with issue link 2020-02-13 16:13:53 -05:00
data-man
948a463cf1 fmt: vector formatting 2020-02-13 16:12:54 -05:00
vegecode
d06bfc2e2a Correct comment to include comptime attribute on format output fn parameter
Without comptime, printing custom type through the stream interface fails
2020-02-12 13:16:32 -06:00
LemonBoy
3237528a59 fmt: Pass the fmt string to the inner formatters 2020-02-10 19:43:11 -05:00
Andrew Kelley
84323504ac std.fmt.format: comptime output parameter 2020-02-05 16:52:18 -05:00
daurnimator
a351350b88 std: format non-exhaustive enums 2020-01-31 22:33:56 +11:00
LemonBoy
d27678fe83 fmt: Refactor the arg fetching code
* Error out if the requested index is out-of-bound
* Tidy-up all the arg-related variables in a struct
2020-01-30 18:07:02 -05:00
Benjamin Feng
b077f3ab7d Promoted "leak_count_allocator" to the main testing.allocator 2020-01-29 22:22:00 -06:00
Benjamin Feng
aa9caf5064 Create leak_count_allocator 2020-01-29 14:37:01 -06:00
Benjamin Feng
4d134a01f5 Move debug.global_allocator to testing.allocator 2020-01-29 12:21:29 -06:00
Andrew Kelley
9dffc369f1 Merge remote-tracking branch 'origin/master' into layneson-cpus_and_features 2020-01-25 23:25:29 -05:00
Nathan Michaels
0000de4fee Handle {s} format for C strings. (#4219)
* Handle {s} format for C strings.

* Fix "cstr" test to actually use c strings.
2020-01-20 12:23:43 -05:00
Andrew Kelley
a867b43366 progress towards merging
see BRANCH_TODO file
2020-01-19 20:54:04 -05:00
LemonBoy
7e5e767ba0 Fix regression in char printing
Closes #4014
2020-01-16 12:17:16 -05:00
LemonBoy
e81b505960 Use the correct calling convention for AEABI intrinsics 2020-01-07 13:42:47 -05:00
Andrew Kelley
25051832b3 std.fmt.format: add helpful compile error for non-tuple args 2019-12-31 13:13:13 -05:00
Vexu
21bc3353b8 translate-c-2 character literals and more test fixes 2019-12-18 01:04:01 +02:00
LemonBoy
19ddbd9e9e Make sure the address is aligned for intToPtr ops
Closes #773
2019-12-15 14:41:05 -05:00
Robin Voetter
8c096707b7 Additional replacements of @typeOf with @TypeOf 2019-12-10 11:09:41 -05:00
Robin Voetter
4b4fbe3887 Replace @typeOf with @TypeOf in all zig source
This change was mostly made with `zig fmt` and this also modified some whitespace. Note that in some files, `zig fmt` produced incorrect code, so the change was made manually.
2019-12-10 11:09:41 -05:00
Andrew Kelley
a3f6a58c77 remove var args from the language
closes #208
2019-12-09 15:27:27 -05:00
Andrew Kelley
5d82744f1c ability to give comptime and non-comptime types to same parameter 2019-12-09 13:30:53 -05:00
Andrew Kelley
8b2622cdd5 std.fmt.format: tuple parameter instead of var args 2019-12-08 22:53:51 -05:00
Andrew Kelley
bef3769bb7 std.fmt.ParseUnsignedError is now public 2019-12-04 18:44:22 -05:00