Bug 245410

Summary: [NEW PORT] devel/tllist: C header file only implementation of a typed linked list
Product: Ports & Packages Reporter: Alexander Sieg <ports>
Component: Individual Port(s)Assignee: Lorenzo Salvadore <salvadore>
Status: Closed FIXED    
Severity: Affects Only Me CC: gerald, salvadore, tcberner
Priority: ---    
Version: Latest   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
version 1.0.0 none

Description Alexander Sieg 2020-04-06 20:05:18 UTC
Created attachment 213137 [details]
version 1.0.0
Comment 1 Lorenzo Salvadore freebsd_committer freebsd_triage 2020-05-14 19:57:07 UTC
Alexander:

I tested successfully your port. As soon as I get approval from my mentors I will commit it.

Gerald, Tobias (my mentors):

Do you approve? I would make the commit by running the following command:
Tools/scripts/addport -n -L 245410 -u salvadore -d devel/tllist/
Comment 2 Gerald Pfeifer freebsd_committer freebsd_triage 2020-05-14 20:55:23 UTC
Okay with me.

Two notes on pkg-plist: "The list itself has two head and tail pointers"
at first made me think that there are two head and two tail pointers;
perhaps rephrase htis as "has a head and a tail pointer"?

And, this one's a bit tongue in cheek, and no change proposed, but "most
operations are constant in time" caught my attention.  I guess it depends 
on what operations one uses.  n-th element is not very cheap for linked
lists, or finding the minimum or maximum element, or the number of equal
elements, or sorting the list, or...
Comment 3 Lorenzo Salvadore freebsd_committer freebsd_triage 2020-05-14 22:53:36 UTC
I agree with Gerald. "The list itself has two head and tail pointers" suggests we have 4 pointers: 2 for head and 2 for tail.

Alexander, are you fine with the change he proposed: "The list itself has a head and a tail pointer"?
Comment 4 Lorenzo Salvadore freebsd_committer freebsd_triage 2020-05-14 23:18:37 UTC
I see that you copied the pkg-descr from upstream, which also has "The list itself has two head and tail pointers". You might want to proprose the modification upstream as well, although upstream the sentence is a bit clearer thanks to the italic font that suggests that "head" and "tail" are the names of the pointers.
Comment 5 commit-hook freebsd_committer freebsd_triage 2020-05-21 21:47:41 UTC
A commit references this bug:

Author: salvadore
Date: Thu May 21 21:46:57 UTC 2020
New revision: 536174
URL: https://svnweb.freebsd.org/changeset/ports/536174

Log:
  Most C implementations of linked list are untyped. That is, their data carriers
  are typically void *. This is error prone since your compiler will not be able
  to help you correct your mistakes (oh, was it a pointer-to-a-pointer... I
  thought it was just a pointer...).

  tllist addresses this by using pre-processor macros to implement dynamic types,
  where the data carrier is typed to whatever you want; both primitive data types
  are supported as well as aggregated ones such as structs, enums and unions.

  Being a double-linked list, most operations are constant in time (including
  pushing and popping both to/from front and back).

  The memory overhead is fairly small; each item carries, besides its data, a
  prev and next pointer (i.e. a constant 16 byte overhead per item on 64-bit
  architectures).

  The list itself has a head and a tail pointer, plus a length variable
  (typically 8 bytes on 64-bit architectures) to make list length lookup constant
  in time.

  Thus, assuming 64-bit pointers (and a 64-bit size_t type), the total overhead
  is 3*8 + n*2*8 bytes.

  WWW: https://codeberg.org/dnkl/tllist

  PR:		245410
  Submitted by:	ports@xanderio.de

Changes:
  head/devel/Makefile
  head/devel/tllist/
  head/devel/tllist/Makefile
  head/devel/tllist/distinfo
  head/devel/tllist/pkg-descr
Comment 6 Lorenzo Salvadore freebsd_committer freebsd_triage 2020-05-21 21:52:11 UTC
I committed the port with Gerald's suggestion: I did not want to have FreeBSD users wait for this port just for a few word in pkg-descr.

If you want to change the text differently just tell it and we will fix it.

Thanks for creating this port!