My one suggestion would be that you use the name capacity instead of size.
These things always confuse me because I can never remember if the size is
size or len ... I'd spell the full name out (not cap) just to make sure
people really mean it when they type it -- my fingers tend to type size
automagically and it's caused me grief.

Don't we want to throw an error or panic or return an error if a slice_put
fails? How serious is that?

realloc: nemo did a study (I can get the paper) on whether it's best to
call realloc with exact sizes or the size*2 type style. Most allocators pad
underneath, as they have their own rules of thumb, and he concluded based
on measurement that it's best to call with exact numbers for that reason.
Things performed better when code did not try to outthink the allocator.
Note that that rule has failed for me, badly, on Go, but it seems to work
for most C usages.

But, further, most allocators will let you know how much space they
pre-allocated for your request. So, in Plan 9, people would do stuff like
this:
x->ptr = alloc(whatever);
x->len = whatever;
x->cap = alloc_cap(x);

where alloc_cap is the way for the allocator to tell you the cap instead of
you trying to tell it the cap via the size*2 rubric.

size*2 is dicey anyway if things get big, as people find when their arrays
get to 4k.

That said, I think this is basically find as is. Just a few thoughts. I am
a bit worried about the silent errors.


On Fri, Jan 22, 2016 at 11:30 AM Dan Cross <[email protected]> wrote:

> The following changes since commit
> 6ae8195b99f28d2f2735dcde2a723a4bde3142ef:
>
>   Add taps for pipes. (2016-01-14 16:04:46 -0500)
>
> are available in the git repository at:
>
>   [email protected]:dancrossnyc/akaros.git slice
>
> for you to fetch changes up to 85de5d2b5f19f17a615eef83d61905b9d5a4878b:
>
>   Slices: A growable list of pointers. (2016-01-22 14:29:47 -0500)
>
> ----------------------------------------------------------------
> Dan Cross (1):
>       Slices: A growable list of pointers.
>
>  kern/include/slice.h | 24 ++++++++++++++++++++++++
>  kern/lib/Kbuild      |  3 ++-
>  kern/lib/slice.c     | 87
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 113 insertions(+), 1 deletion(-)
>  create mode 100644 kern/include/slice.h
>  create mode 100644 kern/lib/slice.c
>
> --
> You received this message because you are subscribed to the Google Groups
> "Akaros" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Akaros" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to