• variadic min and max, (any some and none, cat and more)

    From fir@[email protected] to comp.lang.c on Fri Oct 23 07:44:36 2026
    From Newsgroup: comp.lang.c

    when thinkong on variadic functions not much come to mind but
    only recently i noticed min or max would be good for variadic

    the ai wrote me such variadic min

    #include <stdarg.h>

    int Min(int count,...)
    {
    va_list args;
    va_start(args,count);

    ```
    int min=va_arg(args,int);
    for(int i=1;i<count;i++)
    {
    int x=va_arg(args,int);
    if(x<min) min=x;
    }

    va_end(args);
    return min;
    }


    to use

    int a=Min(4,10,3,7,-2); // -2
    int b=Min(3,15,8,12); // 8
    int c=Min(1,42); // 42


    problem is imo this leading argument n, imo it should

    just be called

    min(34,34,2);

    thus the variadic support probably need to change


    imo it would be better if compiler would jut provide for user such things as


    *arg - (or *args?) (the ram block of arguments with size sizeof(*arg))

    afg[0], arg[1], arg[2] - arguments vakues

    arg - pointer to *arg

    arg_n - how many



    possible two version of variadic should be present one is this
    'unitary' when all args are same type like array of ints
    and this non unitary where any arg can have a different type then
    some king of typeof(arg[2]) operator should be probably
    added


    i guess such unitary variadic should just work close to an array
    pasing (like pasing by int* for example

    foo(int* arg)
    {

    }


    but with hidden arg_n passed (not via stack probably by register, unless arrays are overally passed with size)

    and with functionality to call it in place

    ike foo(2,3,4,1,3,4)

    whiuch in case of things like min max could be handy

    thou it need to be rethinked yet


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From David Brown@[email protected] to comp.lang.c on Fri Oct 23 11:07:43 2026
    From Newsgroup: comp.lang.c

    On 23/10/2026 07:44, fir wrote:
    when thinkong on variadic functions not much come to mind but
    only recently i noticed min or max would be good for variadic

    the ai wrote me such variadic min

    #include <stdarg.h>

    int Min(int count,...)
    {
    va_list args;
    va_start(args,count);

    ```
    int min=va_arg(args,int);
    for(int i=1;i<count;i++)
    {
        int x=va_arg(args,int);
        if(x<min) min=x;
    }

    va_end(args);
    return min;
    }


    to use

    int a=Min(4,10,3,7,-2);  // -2
    int b=Min(3,15,8,12);    // 8
    int c=Min(1,42);         // 42


    problem is imo this leading argument n, imo it should

    just be called

    min(34,34,2);

    thus the variadic support probably need to change


    imo it would be better if compiler would jut provide for user such
    things as


    *arg - (or *args?) (the ram block of arguments with size sizeof(*arg))

    afg[0], arg[1], arg[2] - arguments vakues

    arg - pointer to *arg

    arg_n - how many



    Variadic functions have no way of counting their arguments, or
    identifying their types. This can't be changed easily - it is built
    into the way C functions are called (in pretty much every
    implementation). The caller simply puts the arguments into registers or
    onto the stack according to the ABI for the target, then calls the
    function. The function has to /know/ the number and type of the
    arguments - that cannot be determined automatically.

    This knowledge usually comes from one of two sources. One is from the
    first argument - such as you use above, providing the number of
    arguments explicitly, or the format argument for "printf". The second
    is by using a sentinel - a special end value.

    Variadic functions are naturally very fragile, and the compiler cannot
    help spot mismatches (except in well-known cases, like printf).

    So it is not a case of "variadic function support needs to change" - it
    simply cannot be fixed within the C function model.

    Variadic macros are in some ways better, though they have their own
    challenges and limitations. In particular, you can't loop, they can't
    be recursive, you can't count the number the number of arguments
    directly, and solutions to these evaluate the arguments multiple times.
    But with enough effort, it is possible to handle this - there are plenty
    of blogs with creative solutions. (Jens Gustedt has several good articles.)

    If I wanted to write such a variadic minimum function, I would do so
    using a sentinel, with a macro to add the sentinel:

    #define SENTINEL INT_MIN
    #define min(x0, ...) min_func(x0 __VA_OPT__(,) __VA_ARGS__, SENTINEL)

    int min_func(int x0, ...) {
    va_list args;
    va_start(args);

    int m = x0;
    while (true) {
    int x = va_arg(args, int);
    if (x == SENTINEL) return m;
    if (x < m) m = x;
    }
    }


    It is up to the user to ensure that the arguments to "min" are all ints,
    and none of them match the sentinel value.

    This code uses a C23 feature __VA_OPT__ which can be avoided using a gcc extension or some more complex macros. It also uses the C23 feature of va_start() without additional arguments. If you don't want C23, you can therefore use :

    #define min(x0, ...) min_func(x0, ## __VA_ARGS__, SENTINEL)

    va_start(args, x0);

    But the C23 features make it slightly neater.



    None of this means I think a variadic function here is a good idea. A
    full variadic macro solution is probably better, but somewhat messy,
    complex (when you haven't done it before), and always has a fixed limit
    on the maximum number of elements.

    A good solution could not be done by changing variadic functions in C
    without a massive and disruptive change to the function model. It
    cannot be done by changing variadic macros in C without a massive and disruptive change to the macro model. It would need something else - a variadic template solution that is always expanded inline (somewhat like
    a macro), but is not text-based like pre-processor macros so that you
    can get recursion or loops. Adding that to C would be a huge job - so
    you either stick to the limitations of variadic macros in C, or switch
    to C++.

    template <typename T>
    constexpr auto min(T x0) { return x0; }

    template <typename T, typename U>
    constexpr auto min(T x0, U x1) { return (x0 < x1) ? x0 : x1; }

    template <typename T, typename U, typename... Args>
    constexpr auto min(T x0, U x1, Args... args) {
    return min(x0, min(x1, args...));
    }

    (Here you can use any types that make sense, not just int.)

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From bartc@[email protected] to comp.lang.c on Fri Oct 23 11:37:15 2026
    From Newsgroup: comp.lang.c

    On 23/10/2026 10:07, David Brown wrote:
    On 23/10/2026 07:44, fir wrote:
    when thinkong on variadic functions not much come to mind but
    only recently i noticed min or max would be good for variadic

    Variadic functions have no way of counting their arguments, or
    identifying their types.  This can't be changed easily - it is built
    into the way C functions are called (in pretty much every
    implementation).  The caller simply puts the arguments into registers or onto the stack according to the ABI for the target,

    At last somebody who knows what ABI means.

    If I wanted to write such a variadic minimum function, I would do so
    using a sentinel, with a macro to add the sentinel:

    #define SENTINEL INT_MIN
    #define min(x0, ...) min_func(x0 __VA_OPT__(,) __VA_ARGS__, SENTINEL)

    int min_func(int x0, ...) {
        va_list args;
        va_start(args);

        int m = x0;
        while (true) {
            int x = va_arg(args, int);
            if (x == SENTINEL) return m;
            if (x < m) m = x;
        }
    }


    It is up to the user to ensure that the arguments to "min" are all ints,
    and none of them match the sentinel value.

    This code uses a C23 feature __VA_OPT__ which can be avoided using a gcc extension or some more complex macros.  It also uses the C23 feature of va_start() without additional arguments.  If you don't want C23, you can therefore use :

    #define min(x0, ...) min_func(x0, ## __VA_ARGS__, SENTINEL)

        va_start(args, x0);

    But the C23 features make it slightly neater.



    None of this means I think a variadic function here is a good idea.

    For this purpose, where all elements are expected to be the same type,
    then passing a list is more appropriate, and more type-safe. Especially
    when 'min_func' has a specific return type anyway.

    Example:

    #include <stdio.h>
    #include <limits.h>

    int min(int* list) {
    enum {sentinel = 0};
    int result = INT_MAX;

    while (*list != sentinel) {
    if (*list < result) result = *list;
    ++list;
    }

    return result;
    }

    int main(){
    printf("%d\n", min((int[]){3,1,4,1,5,9,2,6,0}));
    }

    Although a tidier way of imparting the length is better. It depends on
    whether the common use-case is a small fixed number of elements, or an arbitrary array (where the length is likely in some variable.)

    An even simpler way where the number of elements is small and is known,
    is to just write dedicated functions such as min2(x, y) and min3(x, y,
    z). The first will be by far the most common need IME.


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From David Brown@[email protected] to comp.lang.c on Fri Oct 23 13:49:55 2026
    From Newsgroup: comp.lang.c

    On 23/10/2026 12:37, bartc wrote:
    On 23/10/2026 10:07, David Brown wrote:
    On 23/10/2026 07:44, fir wrote:
    when thinkong on variadic functions not much come to mind but
    only recently i noticed min or max would be good for variadic

    Variadic functions have no way of counting their arguments, or
    identifying their types.  This can't be changed easily - it is built
    into the way C functions are called (in pretty much every
    implementation).  The caller simply puts the arguments into registers
    or onto the stack according to the ABI for the target,

    At last somebody who knows what ABI means.

    Note that an "ABI" encompasses many things - calling convention(s) are
    just one (albeit important) part of it.


    If I wanted to write such a variadic minimum function, I would do so
    using a sentinel, with a macro to add the sentinel:

    #define SENTINEL INT_MIN
    #define min(x0, ...) min_func(x0 __VA_OPT__(,) __VA_ARGS__, SENTINEL)

    int min_func(int x0, ...) {
         va_list args;
         va_start(args);

         int m = x0;
         while (true) {
             int x = va_arg(args, int);
             if (x == SENTINEL) return m;
             if (x < m) m = x;
         }
    }


    It is up to the user to ensure that the arguments to "min" are all
    ints, and none of them match the sentinel value.

    This code uses a C23 feature __VA_OPT__ which can be avoided using a
    gcc extension or some more complex macros.  It also uses the C23
    feature of va_start() without additional arguments.  If you don't want
    C23, you can therefore use :

    #define min(x0, ...) min_func(x0, ## __VA_ARGS__, SENTINEL)

         va_start(args, x0);

    But the C23 features make it slightly neater.



    None of this means I think a variadic function here is a good idea.

    For this purpose, where all elements are expected to be the same type,
    then passing a list is more appropriate, and more type-safe. Especially
    when 'min_func' has a specific return type anyway.

    Example:

     #include <stdio.h>
     #include <limits.h>

     int min(int* list) {
         enum {sentinel = 0};
         int result = INT_MAX;

         while (*list != sentinel) {
            if (*list < result) result = *list;
             ++list;
         }

         return result;
     }

     int main(){
         printf("%d\n", min((int[]){3,1,4,1,5,9,2,6,0}));
     }

    Although a tidier way of imparting the length is better. It depends on whether the common use-case is a small fixed number of elements, or an arbitrary array (where the length is likely in some variable.)

    It could be combined with a macro :

    int min_list(size_t n, const int * list) {
    int m = list[0];
    for (size_t i = 1; i < n; i++) {
    if (list[i] < m) m = list[i];
    }
    return m;
    }

    #define min(...) min_list( \
    sizeof((int []) { __VA_ARGS__ }) / sizeof(int), \
    int []) { __VA_ARGS__ })

    Then it can be called with just :

    printf("%d\n", min(3, 1, 4, 1, 5, 9, 2, 6, 0));

    Not a bad solution, when a single fixed type will do.


    An even simpler way where the number of elements is small and is known,
    is to just write dedicated functions such as min2(x, y) and min3(x, y,
    z). The first will be by far the most common need IME.


    You can take this a step further - here using macros so that it works
    for any suitable type :

    #define min2(a, b) (((a) < (b)) ? (a) : (b))
    #define min3(a, b, c) min2(a, min2(b, c))
    #define min4(a, b, c, d) min2(min2(a, b), min2(c, d))
    #define min5(a, b, c, d, e) min2(min2(a, b), min3(c, d, e))
    #define min_arg(a, b, c, d, e, ...) min5(a, b, c, d, e)
    #define min(a, ...) min_arg(__VA_ARGS__ __VA_OPT__(,) a, a, a, a, a, a)

    The first 5 are just "normal" fixed argument minX macros of different
    sizes. Then we make a variadic macro "min" that passes on the arguments
    it is given, with extra copies of "a" so that min5 can always be called,
    along with an intermediary "min_arg" to absorb any unnecessary extra arguments.

    (Again, I am not saying I recommend any of this, but it can be fun to
    play around with.)

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From fir@[email protected] to comp.lang.c on Fri Oct 23 14:42:44 2026
    From Newsgroup: comp.lang.c

    David Brown pisze:
    Variadic functions have no way of counting their arguments, or
    identifying their types.


    this is silly becouse it cos t one register to use so its totally not a problem


    the case with various type arguments is much harder but the one with
    "all ints" etc is quite easy


    simpl as i said the user need the arg[] and arg_max avaliable


    foo(int ...v)
    {
    for(int i=0; i<sizeof(v)/sizeof(int); i++)
    {

    }

    }

    i dont know maybe just same syntax can be used

    foo(int[] v)
    {

    }

    so you can put foo(tab) or foo(2,3,4,2,32,3,23,2) at will
    thou this version would pass via pointer and is someone need to pass by
    stack probably would need to use f(int ...) version

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From bartc@[email protected] to comp.lang.c on Fri Oct 23 13:53:45 2026
    From Newsgroup: comp.lang.c

    On 23/10/2026 12:49, David Brown wrote:
    On 23/10/2026 12:37, bartc wrote:
    On 23/10/2026 10:07, David Brown wrote:
    On 23/10/2026 07:44, fir wrote:
    when thinkong on variadic functions not much come to mind but
    only recently i noticed min or max would be good for variadic

    Variadic functions have no way of counting their arguments, or
    identifying their types.  This can't be changed easily - it is built
    into the way C functions are called (in pretty much every
    implementation).  The caller simply puts the arguments into registers
    or onto the stack according to the ABI for the target,

    At last somebody who knows what ABI means.

    Note that an "ABI" encompasses many things - calling convention(s) are
    just one (albeit important) part of it.

    But it is little to do with APIs other than those tend to get mixed up.


    Although a tidier way of imparting the length is better. It depends on
    whether the common use-case is a small fixed number of elements, or an
    arbitrary array (where the length is likely in some variable.)

    It could be combined with a macro :

    int min_list(size_t n, const int * list) {
        int m = list[0];
        for (size_t i = 1; i < n; i++) {
            if (list[i] < m) m = list[i];
        }
        return m;
    }

    #define min(...) min_list( \
        sizeof((int []) { __VA_ARGS__ }) / sizeof(int), \
            int []) { __VA_ARGS__ })

    Then it can be called with just :

            printf("%d\n", min(3, 1, 4, 1, 5, 9, 2, 6, 0));

    (Is that 0 still a sentinel here? If so it would anyway be better as as INT_MAX or some nicer alias.)

    Not a bad solution, when a single fixed type will do.

    OK. I'm don't know how to do solutions with macros. It is a harder
    language than C.

    An even simpler way where the number of elements is small and is
    known, is to just write dedicated functions such as min2(x, y) and
    min3(x, y, z). The first will be by far the most common need IME.


    You can take this a step further - here using macros so that it works
    for any suitable type :

    #define min2(a, b) (((a) < (b)) ? (a) : (b))
    #define min3(a, b, c) min2(a, min2(b, c))
    #define min4(a, b, c, d) min2(min2(a, b), min2(c, d))
    #define min5(a, b, c, d, e) min2(min2(a, b), min3(c, d, e))
    #define min_arg(a, b, c, d, e, ...) min5(a, b, c, d, e)
    #define min(a, ...) min_arg(__VA_ARGS__ __VA_OPT__(,) a, a, a, a, a, a)

    The first 5 are just "normal" fixed argument minX macros of different sizes.  Then we make a variadic macro "min" that passes on the arguments
    it is given, with extra copies of "a" so that min5 can always be called, along with an intermediary "min_arg" to absorb any unnecessary extra arguments.


    (Again, I am not saying I recommend any of this, but it can be fun to
    play around with.)

    The problem I have with this is use-cases.

    I feel that a special solution for N-way min(), where N is a small compile-time value, is as useful as an N-way solution for 'add'.

    It can happen, but in the case of 'add', you just write x + y + z, you
    don't need +(x, y, z).

    So for min, it would be min(x, min(y, z)) which is not too onerous.

    (But if 'min' was an operator that can be used in-fix style as well as function-like [I do this], then this would also be x min y min z.

    Of course, in a higher level language you can have a solution based on
    using 'reduce(min, x)' where 'min' works on two operands, and x is a
    list. But this would be a poor fit here.)


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From David Brown@[email protected] to comp.lang.c on Fri Oct 23 14:56:25 2026
    From Newsgroup: comp.lang.c

    On 23/10/2026 14:42, fir wrote:
    David Brown pisze:
    Variadic functions have no way of counting their arguments, or
    identifying their types.


    this is silly becouse it cos t one register to use so its totally not a problem


    It doesn't matter whether you think this is "silly" or not. It is a
    fact of the way variadic functions work in C, which goes back to the way
    all functions have always worked in C. The called variadic function has
    no way to determine the number of arguments - the information is lost by
    then.

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From fir@[email protected] to comp.lang.c on Fri Oct 23 14:57:41 2026
    From Newsgroup: comp.lang.c

    fir pisze:
    David Brown pisze:
    Variadic functions have no way of counting their arguments, or
    identifying their types.


    this is silly becouse it cos t one register to use so its totally not a problem


    the case with various type arguments is much harder but the one with
    "all ints" etc is quite easy


    simpl as i said the user need the arg[] and arg_max avaliable


    foo(int ...v)
    {
     for(int i=0; i<sizeof(v)/sizeof(int); i++)
    {

    }

    }



    so as its show in this all one type case you dont need any varargs macros

    foo (int n, ...) {}


    in fact you dont need nothing may just acces via n[i] above all you need
    it to pass in register the max_n value (or size of args block)






    i dont know maybe just same syntax can be used

    foo(int[] v)
    {

    }

    so you can put foo(tab) or foo(2,3,4,2,32,3,23,2) at will
    thou this version would pass via pointer and is someone need to pass by stack probably would need to use f(int ...)  version


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From fir@[email protected] to comp.lang.c on Fri Oct 23 15:00:10 2026
    From Newsgroup: comp.lang.c

    David Brown pisze:
    On 23/10/2026 14:42, fir wrote:
    David Brown pisze:
    Variadic functions have no way of counting their arguments, or
    identifying their types.


    this is silly becouse it cos t one register to use so its totally not
    a problem


    It doesn't matter whether you think this is "silly" or not.  It is a
    fact of the way variadic functions work in C, which goes back to the way
    all functions have always worked in C.  The called variadic function has
    no way to determine the number of arguments - the information is lost by then.

    it does mayer - you may tray to prove it doesnt matter ;c

    im not sayin it not work thsi way that the information is not provided
    client side 9maybe) not im saying its silly not to provide it
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From David Brown@[email protected] to comp.lang.c on Fri Oct 23 15:18:18 2026
    From Newsgroup: comp.lang.c

    On 23/10/2026 14:53, bartc wrote:
    On 23/10/2026 12:49, David Brown wrote:
    On 23/10/2026 12:37, bartc wrote:
    On 23/10/2026 10:07, David Brown wrote:
    On 23/10/2026 07:44, fir wrote:
    when thinkong on variadic functions not much come to mind but
    only recently i noticed min or max would be good for variadic

    Variadic functions have no way of counting their arguments, or
    identifying their types.  This can't be changed easily - it is built >>>> into the way C functions are called (in pretty much every
    implementation).  The caller simply puts the arguments into
    registers or onto the stack according to the ABI for the target,

    At last somebody who knows what ABI means.

    Note that an "ABI" encompasses many things - calling convention(s) are
    just one (albeit important) part of it.

    But it is little to do with APIs other than those tend to get mixed up.

    If you want to argue about ABIs and APIs, go back to the thread where
    you were doing that already. You don't have to bring up every topic
    that frustrates you or irritates you into every thread!



    Although a tidier way of imparting the length is better. It depends
    on whether the common use-case is a small fixed number of elements,
    or an arbitrary array (where the length is likely in some variable.)

    It could be combined with a macro :

    int min_list(size_t n, const int * list) {
         int m = list[0];
         for (size_t i = 1; i < n; i++) {
             if (list[i] < m) m = list[i];
         }
         return m;
    }

    #define min(...) min_list( \
         sizeof((int []) { __VA_ARGS__ }) / sizeof(int), \
             int []) { __VA_ARGS__ })

    Then it can be called with just :

             printf("%d\n", min(3, 1, 4, 1, 5, 9, 2, 6, 0));

    (Is that 0 still a sentinel here? If so it would anyway be better as as INT_MAX or some nicer alias.)

    No, it is no longer a sentinel - it will be used directly, so the value printed will be 0. (It was you that used 0 as a sentinel - in my
    earlier example, I used INT_MIN as the sentinel as that is far less
    likely to conflict with useful values. And it was hidden in the macros.


    Not a bad solution, when a single fixed type will do.

    OK. I'm don't know how to do solutions with macros. It is a harder
    language than C.

    (I hope that in the future, you remember that I called your solution,
    albeit with a macro for a slightly nicer interface, "not bad". And
    remember also that I am Scottish - "not bad" is as complimentary as we get!)


    An even simpler way where the number of elements is small and is
    known, is to just write dedicated functions such as min2(x, y) and
    min3(x, y, z). The first will be by far the most common need IME.


    You can take this a step further - here using macros so that it works
    for any suitable type :

    #define min2(a, b) (((a) < (b)) ? (a) : (b))
    #define min3(a, b, c) min2(a, min2(b, c))
    #define min4(a, b, c, d) min2(min2(a, b), min2(c, d))
    #define min5(a, b, c, d, e) min2(min2(a, b), min3(c, d, e))
    #define min_arg(a, b, c, d, e, ...) min5(a, b, c, d, e)
    #define min(a, ...) min_arg(__VA_ARGS__ __VA_OPT__(,) a, a, a, a, a, a)

    The first 5 are just "normal" fixed argument minX macros of different
    sizes.  Then we make a variadic macro "min" that passes on the
    arguments it is given, with extra copies of "a" so that min5 can
    always be called, along with an intermediary "min_arg" to absorb any
    unnecessary extra arguments.


    (Again, I am not saying I recommend any of this, but it can be fun to
    play around with.)

    The problem I have with this is use-cases.

    I feel that a special solution for N-way min(), where N is a small compile-time value, is as useful as an N-way solution for 'add'.

    It can happen, but in the case of 'add', you just write x + y + z, you
    don't need +(x, y, z).

    So for min, it would be min(x, min(y, z)) which is not too onerous.


    I agree. Min is useful sometimes, but it's not very common. And the
    great majority of uses are probably for two values. I expect N-way min
    turns up more in examples for discussions like this than it does in real
    code.

    (But if 'min' was an operator that can be used in-fix style as well as function-like [I do this], then this would also be x min y min z.

    Of course, in a higher level language you can have a solution based on
    using 'reduce(min, x)' where 'min' works on two operands, and x is a
    list. But this would be a poor fit here.)


    Higher level functions like "reduce", or variadic template functions,
    are useful features in a language. But would be big features to add to
    a relatively small language, and I don't see them being appropriate for
    C. Big languages, like C++ and Python, have good solutions for this (as
    do some smaller languages where the emphasis is different from C).

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From fir@[email protected] to comp.lang.c on Fri Oct 23 15:24:09 2026
    From Newsgroup: comp.lang.c

    fir pisze:
    fir pisze:
    David Brown pisze:
    Variadic functions have no way of counting their arguments, or
    identifying their types.


    this is silly becouse it cos t one register to use so its totally not
    a problem


    the case with various type arguments is much harder but the one with
    "all ints" etc is quite easy


    simpl as i said the user need the arg[] and arg_max avaliable


    foo(int ...v)
    {
      for(int i=0; i<sizeof(v)/sizeof(int); i++)
    {

    }

    }



    so as its show in this all one type case you dont need  any varargs macros

    foo (int n, ...) {}


    in fact you dont need nothing may just acces via n[i] above all you need
    it to pass in register the max_n value (or size of args block)






    i dont know maybe just same syntax can be used

    foo(int[] v)
    {

    }

    so you can put foo(tab) or foo(2,3,4,2,32,3,23,2) at will
    thou this version would pass via pointer and is someone need to pass
    by stack probably would need to use f(int ...)  version






    note it even can somewhat work in present c


    void foo(int n,...)
    {
    int sum = 0;
    for(int i=0; ; i++)
    {
    if( (&n)[i]== 0) break;
    sum+=(&n)[i];
    }

    }

    but this assumes args are all put on stack

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From bartc@[email protected] to comp.lang.c on Fri Oct 23 15:29:47 2026
    From Newsgroup: comp.lang.c

    On 23/10/2026 14:18, David Brown wrote:
    On 23/10/2026 14:53, bartc wrote:

    OK. I'm don't know how to do solutions with macros. It is a harder
    language than C.

    (I hope that in the future, you remember that I called your solution,
    albeit with a macro for a slightly nicer interface, "not bad".  And remember also that I am Scottish - "not bad" is as complimentary as we
    get!)

    I had to read it again. I assumed you were talking only about your
    version not mine!
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From David Brown@[email protected] to comp.lang.c on Fri Oct 23 16:48:05 2026
    From Newsgroup: comp.lang.c

    On 23/10/2026 16:29, bartc wrote:
    On 23/10/2026 14:18, David Brown wrote:
    On 23/10/2026 14:53, bartc wrote:

    OK. I'm don't know how to do solutions with macros. It is a harder
    language than C.

    Complex macros can be hairy. When they are used for things
    significantly more advanced than envisioned when the C pre-processor was conceived, and you don't often work with such macros, the results can be
    hard to write and hard to understand. But they can still be useful, and
    they can still be fun!


    (I hope that in the future, you remember that I called your solution,
    albeit with a macro for a slightly nicer interface, "not bad".  And
    remember also that I am Scottish - "not bad" is as complimentary as we
    get!)

    I had to read it again. I assumed you were talking only about your
    version not mine!

    It was your list version. I improved it by using a macro so that the
    calling syntax was nicer and the sentinel was not needed.

    None of this - your code or mine - is revolutionary or innovative, and
    there are endless examples of similar code online. But I preferred your
    use of a list to fir's use of va_args, with the compound initialiser
    being the key to usability.


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From bartc@[email protected] to comp.lang.c on Fri Oct 23 16:02:57 2026
    From Newsgroup: comp.lang.c

    On 23/10/2026 13:42, fir wrote:
    David Brown pisze:
    Variadic functions have no way of counting their arguments, or
    identifying their types.


    this is silly becouse it cos t one register to use so its totally not a problem


    the case with various type arguments is much harder but the one with
    "all ints" etc is quite easy


    simpl as i said the user need the arg[] and arg_max avaliable


    foo(int ...v)
    {
     for(int i=0; i<sizeof(v)/sizeof(int); i++)
    {

    }


    Yes, you can create an alternative variadic solution, that doesn't
    interfere with how regular variadic functions work.

    I came up with a similar idea to yours, but the parameter list looks
    like this:

    void F(int a, b, c ...) {}

    So it is "c ..." not "c, ...". "c" is a variadic parameter, which is
    passed as an int array.

    I never did an implementation, but the elements would be assembled into
    a buffer, not pushed, and a pointer to that buffer passed as well as the length. (My scheme would have been syntactic sugar for slices, which
    carry a length.)

    Of course this is only where all variadic elements are the same type.
    Mixed types would need to use the existing less safe variadic scheme.

    Note that current ABIs would not support a new scheme, making it harder
    to use such functions across languages and even with C implementations
    that did not support it.

    In this case, an API (not ABI!) exporting such a function may need to
    express it in regular C terms. So for my example, it might be something
    like this if a separate pointer/length args are passed.

    void F(int a, b, *c, size_t clength);

    Callers also wouldn't be able to do F(1, 2, 3, 4, 5), it would need to be:

    F(1, 2, (int[]){3, 4, 5}, 3);


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Ike Naar@[email protected] to comp.lang.c on Fri Oct 23 16:40:58 2026
    From Newsgroup: comp.lang.c

    On 2026-10-23, David Brown <[email protected]> wrote:
    If I wanted to write such a variadic minimum function, I would do so
    using a sentinel, with a macro to add the sentinel:

    #define SENTINEL INT_MIN
    #define min(x0, ...) min_func(x0 __VA_OPT__(,) __VA_ARGS__, SENTINEL)

    int min_func(int x0, ...) {
    va_list args;
    va_start(args);

    int m = x0;
    while (true) {
    int x = va_arg(args, int);
    if (x == SENTINEL) return m;
    if (x < m) m = x;
    }
    }

    It is up to the user to ensure that the arguments to "min" are all ints,
    and none of them match the sentinel value.

    If the sentinel value were changed to INT_MAX the none-match requirement
    can be dropped (since INT_MAX is the identity element of the min operation
    it could safely appear in the argument list).
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Ike Naar@[email protected] to comp.lang.c on Fri Oct 23 16:47:40 2026
    From Newsgroup: comp.lang.c

    On 2026-10-23, Ike Naar <[email protected]> wrote:
    On 2026-10-23, David Brown <[email protected]> wrote:
    If I wanted to write such a variadic minimum function, I would do so
    using a sentinel, with a macro to add the sentinel:

    #define SENTINEL INT_MIN
    #define min(x0, ...) min_func(x0 __VA_OPT__(,) __VA_ARGS__, SENTINEL)

    int min_func(int x0, ...) {
    va_list args;
    va_start(args);

    int m = x0;
    while (true) {
    int x = va_arg(args, int);
    if (x == SENTINEL) return m;
    if (x < m) m = x;
    }
    }

    It is up to the user to ensure that the arguments to "min" are all ints,
    and none of them match the sentinel value.

    If the sentinel value were changed to INT_MAX the none-match requirement
    can be dropped (since INT_MAX is the identity element of the min operation
    it could safely appear in the argument list).

    Sorry, I was not thinking things through. Please forget that post.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From David Brown@[email protected] to comp.lang.c on Fri Oct 23 18:54:02 2026
    From Newsgroup: comp.lang.c

    On 23/10/2026 18:40, Ike Naar wrote:
    On 2026-10-23, David Brown <[email protected]> wrote:
    If I wanted to write such a variadic minimum function, I would do so
    using a sentinel, with a macro to add the sentinel:

    #define SENTINEL INT_MIN
    #define min(x0, ...) min_func(x0 __VA_OPT__(,) __VA_ARGS__, SENTINEL)

    int min_func(int x0, ...) {
    va_list args;
    va_start(args);

    int m = x0;
    while (true) {
    int x = va_arg(args, int);
    if (x == SENTINEL) return m;
    if (x < m) m = x;
    }
    }

    It is up to the user to ensure that the arguments to "min" are all ints,
    and none of them match the sentinel value.

    If the sentinel value were changed to INT_MAX the none-match requirement
    can be dropped (since INT_MAX is the identity element of the min operation
    it could safely appear in the argument list).

    min(10, SENTINEL, 1) would still fail - it would stop when the sentinel
    is reached, and return 10.

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From chine.bleu@[email protected] to comp.lang.c on Sat Oct 24 03:25:02 2026
    From Newsgroup: comp.lang.c

    fir wrote:
    problem is imo this leading argument n, imo it should

    just be called

    min(34,34,2);

    thus the variadic support probably need to change


    The compiler cannot be certain which function calls are variadic. Old
    style function declarations are allowed which provide no information
    about arguments. You cannot change this without breaking unknown amount
    of dusty old code.
    --
    Siri Seal of Disavowal #777-000. Disavowed. Denied. @
    NO KINGS For I desire mercy not sacrifice. /|\
    The Church of the Holey Apple .signature 5.5 / \
    of Discordian Mysteries. This post insults Islam. Mohamed
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From chine.bleu@[email protected] to comp.lang.c on Sat Oct 24 03:37:36 2026
    From Newsgroup: comp.lang.c

    bartc wrote:
    For this purpose, where all elements are expected to be the same type,
    then passing a list is more appropriate, and more type-safe. Especially
    when 'min_func' has a specific return type anyway.

    In general the function argument types might not be known. An actual
    argument list might have 1 byte argument, a 17 byte argument, a 4 byte argument, 128 byte argument. In languages and environments where the
    type of each argument is declared, calls can pass arguments with
    specialised protocols.

    Otherwise the arguments are passed usually where any C function is
    compatiable or Fortran subprogram compatiable.
    --
    Siri Seal of Disavowal #777-000. Disavowed. Denied. @
    NO KINGS For I desire mercy not sacrifice. /|\
    The Church of the Holey Apple .signature 5.5 / \
    of Discordian Mysteries. This post insults Islam. Mohamed
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From David Brown@[email protected] to comp.lang.c on Sat Oct 24 12:59:46 2026
    From Newsgroup: comp.lang.c

    On 23/10/2026 18:47, Ike Naar wrote:
    On 2026-10-23, Ike Naar <[email protected]> wrote:
    On 2026-10-23, David Brown <[email protected]> wrote:
    If I wanted to write such a variadic minimum function, I would do so
    using a sentinel, with a macro to add the sentinel:

    #define SENTINEL INT_MIN
    #define min(x0, ...) min_func(x0 __VA_OPT__(,) __VA_ARGS__, SENTINEL)

    int min_func(int x0, ...) {
    va_list args;
    va_start(args);

    int m = x0;
    while (true) {
    int x = va_arg(args, int);
    if (x == SENTINEL) return m;
    if (x < m) m = x;
    }
    }

    It is up to the user to ensure that the arguments to "min" are all ints, >>> and none of them match the sentinel value.

    Sorry, I was not thinking things through. Please forget that post.

    What post? :-)

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From bartc@[email protected] to comp.lang.c on Sat Oct 24 12:04:16 2026
    From Newsgroup: comp.lang.c

    On 24/10/2026 11:37, chine.bleu wrote:
    bartc wrote:
    For this purpose, where all elements are expected to be the same type,
    then passing a list is more appropriate, and more type-safe. Especially
    when 'min_func' has a specific return type anyway.

    In general the function argument types might not be known.

    So you're talking about variadic functions as they are now? My comment
    was about a different kind of variadic function with variable-length
    argument lists but of a common type, known at compile-time.

    An actual
    argument list might have 1 byte argument, a 17 byte argument, a 4 byte argument, 128 byte argument.

    Still talking about variadic functions? Then in C it's more restricted: variadic arguments will be, or be promoted to, one of:

    * Integer (typically one of i32 u32 i64 u64)

    * Float (typically f64)

    * Pointer

    * Struct

    The last is more variable, but on modern ABIs, a struct that isn't one
    of certain set of patterns will be passed by pointer. (I don't know how _BitInt are handled.)


    In languages and environments where the
    type of each argument is declared, calls can pass arguments with
    specialised protocols.

    So now this is about regular functions? Then there isn't an issue; just
    follow the ABI if functions may be shared across FFIs or separately
    compiled C code.

    But for static functions, a compiler can use any scheme it likes. Or in
    some cases, use no scheme at all because it inlines calls.


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From fir@[email protected] to comp.lang.c on Sat Oct 24 15:12:37 2026
    From Newsgroup: comp.lang.c

    chine.bleu pisze:
    fir wrote:
    problem is imo this leading argument n, imo it should

    just be called

    min(34,34,2);

    thus the variadic support probably need to change


    The compiler cannot be certain which function calls are variadic. Old
    style function declarations are allowed which provide no information
    about arguments. You cannot change this without breaking unknown amount
    of dusty old code.




    im not sure as what you say...cant it just set this register to hold the
    info of sze of arguments in case he dont know?

    mostly if definition is described as variadic its vaiadic


    overally im not sue if i should even consider all that conventions who
    pass args by stack as a list as it seems for me kinda obsolete (but
    maybe i should)

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From fir@[email protected] to comp.lang.c on Sat Oct 24 15:23:22 2026
    From Newsgroup: comp.lang.c

    David Brown pisze:
    On 23/10/2026 16:29, bartc wrote:
    On 23/10/2026 14:18, David Brown wrote:
    On 23/10/2026 14:53, bartc wrote:

    OK. I'm don't know how to do solutions with macros. It is a harder
    language than C.

    Complex macros can be hairy.  When they are used for things
    significantly more advanced than envisioned when the C pre-processor was conceived, and you don't often work with such macros, the results can be hard to write and hard to understand.  But they can still be useful, and they can still be fun!


    (I hope that in the future, you remember that I called your solution,
    albeit with a macro for a slightly nicer interface, "not bad".  And
    remember also that I am Scottish - "not bad" is as complimentary as
    we get!)

    I had to read it again. I assumed you were talking only about your
    version not mine!

    It was your list version.  I improved it by using a macro so that the calling syntax was nicer and the sentinel was not needed.

    None of this - your code or mine - is revolutionary or innovative, and
    there are endless examples of similar code online.  But I preferred your use of a list to fir's use of va_args, with the compound initialiser
    being the key to usability.


    im not quite understand what you say here (wak english) but theis
    "shallow varargs" with N passed via register could be quite usable


    like for min max for example


    min(a,b,c,d,e)
    you just write a function min bodli like for min(int*t)
    but you just have nice interface for all that tiny cases where you searh
    min in short cases like 2,3,4,5,6,7,8,6 arguments

    in comparsion to predefined versions for 2/3 arguments it would be a bit slower maybe but not so much,
    overally i find it rather usefull

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Tim Rentsch@[email protected] to comp.lang.c on Sat Oct 24 07:17:03 2026
    From Newsgroup: comp.lang.c

    bartc <[email protected]> writes:

    [discussing how to implement min() and max() functions]

    [...]
    I never did an implementation, but the elements would be assembled
    into a buffer, not pushed, and a pointer to that buffer passed as
    well as the length. (My scheme would have been syntactic sugar
    for slices, which carry a length.)

    Of course this is only where all variadic elements are the same
    type. Mixed types would need to use the existing less safe
    variadic scheme.

    First let's take a stab at stating the problem:

    1. Define min() and max() variadic functions or macros ...

    2. That accept any (reasonable) number of arguments ...

    3. Which can be any combination of suitable types ...

    4. Including standard integer types and real floating types ...

    5. Evaluating each argument exactly once ...

    6. Producing a result having a type suitable to the arguments ...

    7. And does something sensible when arguments are of mixed types.

    Sadly the discussion that followed consisted mostly of partial
    ideas for how some simpler problem might be solved. Instead just
    implement something (in standard C, since this is comp.lang.c);
    it can be done in C11. Then either post a solution or explain a
    problem encountered during an attempted solution. Most of the
    comments that have been posted were just ego stroking.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From bartc@[email protected] to comp.lang.c on Sat Oct 24 16:05:52 2026
    From Newsgroup: comp.lang.c

    On 24/10/2026 15:17, Tim Rentsch wrote:
    bartc <[email protected]> writes:

    [discussing how to implement min() and max() functions]

    [...]
    I never did an implementation, but the elements would be assembled
    into a buffer, not pushed, and a pointer to that buffer passed as
    well as the length. (My scheme would have been syntactic sugar
    for slices, which carry a length.)

    Of course this is only where all variadic elements are the same
    type. Mixed types would need to use the existing less safe
    variadic scheme.

    First let's take a stab at stating the problem:

    1. Define min() and max() variadic functions or macros ...

    2. That accept any (reasonable) number of arguments ...

    3. Which can be any combination of suitable types ...

    4. Including standard integer types and real floating types ...

    5. Evaluating each argument exactly once ...

    6. Producing a result having a type suitable to the arguments ...

    7. And does something sensible when arguments are of mixed types.

    I thought (3) implied mixed types, so that it would work even in that
    case. (Maybe 'suitable' needs to be defined.)

    But (7) suggests that would be an error. What about types such as
    pointers (where comparisons can work), or structs (where they don't)?

    Without a more vigorous spec, this is just too open-ended.


    Sadly the discussion that followed consisted mostly of partial
    ideas for how some simpler problem might be solved.

    And what /was/ the problem? The one I concentrated on was a different
    way of dealing with a variable number of arguments to a function, via a hypothetical new feature. Not specifically multi-operand min/max.

    I did not look at how it would be done in standard C (I only suggested
    how a likely mechanism might be expressed in standard C, for the purpose
    of calling from a regular compiler, but one which would be too unwieldy
    to use in practice.)

    Most of the
    comments that have been posted were just ego stroking.

    Yours won't be of course!
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From fir@[email protected] to comp.lang.c on Sat Oct 24 18:37:38 2026
    From Newsgroup: comp.lang.c

    fir pisze:
    David Brown pisze:
    On 23/10/2026 16:29, bartc wrote:
    On 23/10/2026 14:18, David Brown wrote:
    On 23/10/2026 14:53, bartc wrote:

    OK. I'm don't know how to do solutions with macros. It is a harder
    language than C.

    Complex macros can be hairy.  When they are used for things
    significantly more advanced than envisioned when the C pre-processor
    was conceived, and you don't often work with such macros, the results
    can be hard to write and hard to understand.  But they can still be
    useful, and they can still be fun!


    (I hope that in the future, you remember that I called your
    solution, albeit with a macro for a slightly nicer interface, "not
    bad".  And remember also that I am Scottish - "not bad" is as
    complimentary as we get!)

    I had to read it again. I assumed you were talking only about your
    version not mine!

    It was your list version.  I improved it by using a macro so that the
    calling syntax was nicer and the sentinel was not needed.

    None of this - your code or mine - is revolutionary or innovative, and
    there are endless examples of similar code online.  But I preferred
    your use of a list to fir's use of va_args, with the compound
    initialiser being the key to usability.


    im not quite understand what you say here (wak english) but theis
    "shallow varargs" with N passed via register could be quite usable


    like for min max for example


    min(a,b,c,d,e)
    you just write a function min bodli like for min(int*t)
    but you just have nice interface for all that tiny cases where you searh
    min in short cases like 2,3,4,5,6,7,8,6 arguments

    in comparsion to predefined versions for 2/3 arguments it would be a bit slower maybe but not so much,
    overally i find it rather usefull


    those some any and none could also be implemented

    like

    int some (int a, ...)
    {
    for(int i=0; i<N; i++)
    {
    if(arg[i]) return 1;

    }
    return 0;

    }

    its good and logical..clasic c version (from ai)

    ai says that you need to pass the N number explicitely and that sucks
    i also dont know as to efficiency

    #include <stdarg.h>

    int some(int N,...)
    {
    int i;
    int a;
    va_list arg;

    va_start(arg,N);

    for(i=0;i<N;i++)
    {
    a=va_arg(arg,int);
    if(a)
    {
    va_end(arg);
    return 1;
    }
    }

    va_end(arg);
    return 0;
    }


    this efficienct of callsic varargs its said depends on architecture and
    im not sure if i want to go into that (But if some has nothing to do may
    found how it is and post on it ..i could see)


    overally efficiency of thsi shouldnt be bad.. takin away the question
    floding things on stack is overally slow, but if som e care it may
    inline it and in this case probably this can be optimised

    ant to get back to begining of this topic imo such one type varargs
    could be quite usefull imo

    thou its own form suggast thet the best implementation is


    some(int* s)

    it would allow pasing some(a,b,c,d,e) and some(tab) or maybe even
    some(int3) (where int3 is a structure of 3 ints and using one code to it all --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Lawrence =?iso-8859-13?q?D=FFOliveiro?=@[email protected] to comp.lang.c on Sat Oct 24 22:24:55 2026
    From Newsgroup: comp.lang.c

    On Sat, 24 Oct 2026 03:25:02 -0700, chine.bleu wrote:

    The compiler cannot be certain which function calls are variadic.
    Old style function declarations are allowed which provide no
    information about arguments.

    *None* of the styles of function declarations that C currently
    supports provide any kind of runtime information about arguments. The
    whole stdarg(3) mechanism relies on calling and called code agreeing
    on their own convention for how to indicate the end of the argument
    list, and what types of arguments to expect.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Keith Thompson@[email protected] to comp.lang.c on Sat Oct 24 16:24:00 2026
    From Newsgroup: comp.lang.c

    "chine.bleu" <[email protected]> writes:
    [...]
    The compiler cannot be certain which function calls are variadic. Old
    style function declarations are allowed which provide no information
    about arguments. You cannot change this without breaking unknown
    amount of dusty old code.

    Yes, it can.

    In C90, if you call a variadic function, the prototype with `, ...`
    must be visible at the point of the call. If the visible declaration
    is a non-variadic prototype, or not a prototype, or nonexistent,
    the compiler treats it as a non-variadic call. If the call and
    declaration are inconsistent with the actual definition, the
    behavior is undefined.

    In C99, calls with no visible declaration were made constraint
    violations.

    In C23, old-style function declarations were removed. A visible
    prototype is always required, and a prototype always indicates
    whether the function is variadic or not.
    --
    Keith Thompson (The_Other_Keith) [email protected]
    void Void(void) { Void(); } /* The recursive call of the void */
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Keith Thompson@[email protected] to comp.lang.c on Sat Oct 24 16:34:05 2026
    From Newsgroup: comp.lang.c

    bartc <[email protected]> writes:
    [...]
    Still talking about variadic functions? Then in C it's more
    restricted: variadic arguments will be, or be promoted to, one of:

    * Integer (typically one of i32 u32 i64 u64)

    * Float (typically f64)

    * Pointer

    * Struct

    The last is more variable, but on modern ABIs, a struct that isn't one
    of certain set of patterns will be passed by pointer. (I don't know
    how _BitInt are handled.)
    [...]

    That's an odd and incomplete way to state the rules (and you
    missed unions). See "default argument promotions" in the standard.

    A variadic argument of an integer type narrower than int is promoted
    to int or unsigned int (int if int holds all possible values of the
    source type, otherwise unsigned int). These "integer promotions"
    do not apply to _BitInt types. A variadic argument of type float is
    promoted to double. All other argument types are not promoted --
    though the usual array-to-pointer and function-to-pointer conversions
    are applied.
    --
    Keith Thompson (The_Other_Keith) [email protected]
    void Void(void) { Void(); } /* The recursive call of the void */
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From bartc@[email protected] to comp.lang.c on Sun Oct 25 01:40:36 2026
    From Newsgroup: comp.lang.c

    On 25/10/2026 00:34, Keith Thompson wrote:
    bartc <[email protected]> writes:
    [...]
    Still talking about variadic functions? Then in C it's more
    restricted: variadic arguments will be, or be promoted to, one of:

    * Integer (typically one of i32 u32 i64 u64)

    * Float (typically f64)

    * Pointer

    * Struct

    The last is more variable, but on modern ABIs, a struct that isn't one
    of certain set of patterns will be passed by pointer. (I don't know
    how _BitInt are handled.)
    [...]

    That's an odd and incomplete way to state the rules (and you
    missed unions).

    They will be grouped with structs.


    A variadic argument of an integer type narrower than int is promoted
    to int or unsigned int (int if int holds all possible values of the
    source type, otherwise unsigned int). These "integer promotions"
    do not apply to _BitInt types. A variadic argument of type float is
    promoted to double. All other argument types are not promoted --
    though the usual array-to-pointer and function-to-pointer conversions
    are applied.

    The list represented variadic argument types after promotions. It was
    anywhere summarising existing variadic functions as it wasn't clear to
    which kinds Mr .bleu was referring to.

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Keith Thompson@[email protected] to comp.lang.c on Sat Oct 24 19:24:28 2026
    From Newsgroup: comp.lang.c

    bartc <[email protected]> writes:
    On 25/10/2026 00:34, Keith Thompson wrote:
    bartc <[email protected]> writes:
    [...]
    Still talking about variadic functions? Then in C it's more
    restricted: variadic arguments will be, or be promoted to, one of:

    * Integer (typically one of i32 u32 i64 u64)

    * Float (typically f64)

    * Pointer

    * Struct

    The last is more variable, but on modern ABIs, a struct that isn't one
    of certain set of patterns will be passed by pointer. (I don't know
    how _BitInt are handled.)
    [...]
    That's an odd and incomplete way to state the rules (and you
    missed unions).

    They will be grouped with structs.

    Will they be? By whom? I don't know what that even means.

    Perhaps you just forgot about unions -- which would be perfectly understandable.

    A variadic argument of an integer type narrower than int is promoted
    to int or unsigned int (int if int holds all possible values of the
    source type, otherwise unsigned int). These "integer promotions"
    do not apply to _BitInt types. A variadic argument of type float is
    promoted to double. All other argument types are not promoted --
    though the usual array-to-pointer and function-to-pointer conversions
    are applied.

    The list represented variadic argument types after promotions. It was anywhere summarising existing variadic functions as it wasn't clear to
    which kinds Mr .bleu was referring to.

    I'm not at all sure what you mean.

    You posted an incomplete summary of the promotion rules. I posted an
    accurate summary of the promotion rules.
    --
    Keith Thompson (The_Other_Keith) [email protected]
    void Void(void) { Void(); } /* The recursive call of the void */
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Richard Harnden@[email protected] to comp.lang.c on Sun Oct 25 04:24:26 2026
    From Newsgroup: comp.lang.c

    On 23/10/2026 06:44, fir wrote:
    when thinkong on variadic functions not much come to mind but
    only recently i noticed min or max would be good for variadic

    the ai wrote me such variadic min

    I don't think that I'd bother with stdarg at all.

    Just use a string of ints ...

    int min(const int *n)
    {
    int m = INT_MAX;

    while ( *n )
    {
    if ( *n < m ) m = *n;

    n++;
    }

    return m;
    }

    int a=Min(4,10,3,7,-2); // -2

    int a = min((int[]){10,3,7,-2}));




    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Richard Harnden@[email protected] to comp.lang.c on Sun Oct 25 10:55:36 2026
    From Newsgroup: comp.lang.c

    On 25/10/2026 04:24, Richard Harnden wrote:
    On 23/10/2026 06:44, fir wrote:
    when thinkong on variadic functions not much come to mind but
    only recently i noticed min or max would be good for variadic

    the ai wrote me such variadic min

    I don't think that I'd bother with stdarg at all.

    Just use a string of ints ...

    int min(const int *n)
    {
        int m = INT_MAX;

        while ( *n )
        {
            if ( *n < m ) m = *n;

            n++;
        }

        return m;
    }

    int a=Min(4,10,3,7,-2);  // -2

    int a = min((int[]){10,3,7,-2}));



    That has undefined behaviour - unfortunately, the kind that does what I expected :(

    You either need to pass the size ...

    int min(const int *n, size_t z)
    {
    int m = INT_MAX;

    for (size_t i=0; i<z; i++)
    if ( n[i] < m ) m = n[i];

    return m;
    }

    Or have a NULL terminated pointer to pointer to int ...

    int min(int **n)
    {
    int m = INT_MAX;

    while ( *n )
    {
    if ( **n < m ) m = **n;

    n++;
    }

    return m;
    }

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From fir@[email protected] to comp.lang.c on Sun Oct 25 11:59:30 2026
    From Newsgroup: comp.lang.c

    Richard Harnden pisze:
    On 23/10/2026 06:44, fir wrote:
    when thinkong on variadic functions not much come to mind but
    only recently i noticed min or max would be good for variadic

    the ai wrote me such variadic min

    I don't think that I'd bother with stdarg at all.

    Just use a string of ints ...

    int min(const int *n)
    {
        int m = INT_MAX;

        while ( *n )
        {
            if ( *n < m ) m = *n;

            n++;
        }

        return m;
    }

    int a=Min(4,10,3,7,-2);  // -2

    int a = min((int[]){10,3,7,-2}));



    such thig should be builtin nd automatic there are hovever some decisions to conclude for example

    foo(float3 x);
    goo(float3* x);

    foo({1,2,4.});

    goo({2,3,4}) or goo(&{2,3,4})

    or maybe allowing to drop {} at all
    foo(1,2,4.);

    though the last one sem risky..though the vararg talks before suggest it
    is an option






    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From bartc@[email protected] to comp.lang.c on Sun Oct 25 11:00:31 2026
    From Newsgroup: comp.lang.c

    On 25/10/2026 02:24, Keith Thompson wrote:
    bartc <[email protected]> writes:
    On 25/10/2026 00:34, Keith Thompson wrote:
    bartc <[email protected]> writes:
    [...]
    Still talking about variadic functions? Then in C it's more
    restricted: variadic arguments will be, or be promoted to, one of:

    * Integer (typically one of i32 u32 i64 u64)

    * Float (typically f64)

    * Pointer

    * Struct

    The last is more variable, but on modern ABIs, a struct that isn't one >>>> of certain set of patterns will be passed by pointer. (I don't know
    how _BitInt are handled.)
    [...]
    That's an odd and incomplete way to state the rules (and you
    missed unions).

    They will be grouped with structs.

    Will they be? By whom? I don't know what that even means.

    Perhaps you just forgot about unions -- which would be perfectly understandable.

    I just don't consider unions as a special type at all. I mean, what is
    the practical between:

    union {...};

    and:

    struct {union {...};};

    where "..." is the same in each case?


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From fir@[email protected] to comp.lang.c on Sun Oct 25 12:01:14 2026
    From Newsgroup: comp.lang.c

    ichard Harnden pisze:> On 23/10/2026 06:44, fir wrote:
    when thinkong on variadic functions not much come to mind but
    only recently i noticed min or max would be good for variadic

    the ai wrote me such variadic min

    I don't think that I'd bother with stdarg at all.

    Just use a string of ints ...

    int min(const int *n)
    {
    int m = INT_MAX;

    while ( *n )
    {
    if ( *n < m ) m = *n;

    n++;
    }

    return m;
    }

    int a=Min(4,10,3,7,-2); // -2

    int a = min((int[]){10,3,7,-2}));



    such thig should be builtin nd automatic there are hovever some
    decisions toconclude for example

    foo(float3 x);
    goo(float3* x);

    foo({1,2,4.});

    goo({2,3,4}) or goo(&{2,3,4})

    or maybe allowing to drop {} at all
    foo(1,2,4.);

    though the last one sem risky..though the vararg talks before suggest it
    is an option
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From bartc@[email protected] to comp.lang.c on Sun Oct 25 12:06:47 2026
    From Newsgroup: comp.lang.c

    On 25/10/2026 11:01, fir wrote:
    ichard Harnden pisze:> On 23/10/2026 06:44, fir wrote:
    when thinkong on variadic functions not much come to mind but
    only recently i noticed min or max would be good for variadic

    the ai wrote me such variadic min

    I don't think that I'd bother with stdarg at all.

    Just use a string of ints ...

    int min(const int *n)
    {
          int m = INT_MAX;

          while ( *n )
          {
              if ( *n < m ) m = *n;

              n++;
          }

          return m;
    }

    int a=Min(4,10,3,7,-2);  // -2

    int a = min((int[]){10,3,7,-2}));



    such thig should be builtin nd automatic there are hovever some
    decisions toconclude for example

    foo(float3 x);
    goo(float3* x);

    foo({1,2,4.});

    goo({2,3,4}) or  goo(&{2,3,4})

    or maybe allowing to drop {} at all
    foo(1,2,4.);

    So:

    foo(float3 x, float3 y, int n);

    can be called as:

    foo(1, 2, 3, 4, 5, 6, 7);

    It's so easy to see where one argument ends and another begins! And this
    is the simplest possible set of arguments.

    Still, C has prior art here:

    typedef struct {float x,y,z;} float3;
    typedef struct {float3 a, b; int c;} T;

    T x = {1, 2, 3, 4, 5, 6, 7};

    So that would fit right in!


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From fir@[email protected] to comp.lang.c on Sun Oct 25 13:57:44 2026
    From Newsgroup: comp.lang.c

    bartc pisze:
    On 25/10/2026 11:01, fir wrote:
    ichard Harnden pisze:> On 23/10/2026 06:44, fir wrote:
    when thinkong on variadic functions not much come to mind but
    only recently i noticed min or max would be good for variadic
    ;
    the ai wrote me such variadic min
    ;
    I don't think that I'd bother with stdarg at all.
    ;
    Just use a string of ints ...
    ;
    int min(const int *n)
    {
    ;      int m = INT_MAX;
    ;
    ;      while ( *n )
    ;      {
    ;          if ( *n < m ) m = *n;
    ;
    ;          n++;
    ;      }
    ;
    ;      return m;
    }
    ;
    int a=Min(4,10,3,7,-2);  // -2
    ;
    int a = min((int[]){10,3,7,-2}));
    ;
    ;
    ;
    such thig should be builtin nd automatic there are hovever some
    decisions toconclude for example

    foo(float3 x);
    goo(float3* x);

    foo({1,2,4.});

    goo({2,3,4}) or  goo(&{2,3,4})

    or maybe allowing to drop {} at all
    foo(1,2,4.);

    So:

       foo(float3 x, float3 y, int n);

    can be called as:

       foo(1, 2, 3, 4, 5, 6, 7);


    well its a question what to put as a mandatory.. i dont know yet, but
    for sure thise automatic 'fitting' would be somewhat good

    some can write

    foo({1, 2, 3}, {4, 5, 6}, 7);

    and you again present anti-c philosophy

    c allows you write programs ale obfuscated c contests..in your philosofy
    you would forbide it all? forcing codes not have syttaktic shortcuts?

    i totally not agree to such philosophy

    (though its not always clear whay s good shortcut/hack c way and what is
    not)



    It's so easy to see where one argument ends and another begins! And this
    is the simplest possible set of arguments.

    Still, C has prior art here:

       typedef struct {float x,y,z;} float3;
       typedef struct {float3 a, b; int c;} T;

       T x = {1, 2, 3, 4, 5, 6, 7};

    So that would fit right in!



    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Tim Rentsch@[email protected] to comp.lang.c on Sun Oct 25 08:15:06 2026
    From Newsgroup: comp.lang.c

    Richard Harnden <[email protected]d> writes:

    On 25/10/2026 04:24, Richard Harnden wrote:

    On 23/10/2026 06:44, fir wrote:

    when thinkong on variadic functions not much come to mind but
    only recently i noticed min or max would be good for variadic

    the ai wrote me such variadic min

    I don't think that I'd bother with stdarg at all.

    Just use a string of ints ...

    int min(const int *n)
    {
    int m = INT_MAX;

    while ( *n )
    {
    if ( *n < m ) m = *n;

    n++;
    }

    return m;
    }

    int a=Min(4,10,3,7,-2); // -2

    int a = min((int[]){10,3,7,-2}));

    That has undefined behaviour - unfortunately, the kind that does what
    I expected :(

    You either need to pass the size ...

    int min(const int *n, size_t z)
    {
    int m = INT_MAX;

    for (size_t i=0; i<z; i++)
    if ( n[i] < m ) m = n[i];

    return m;
    }

    If we are willing to treat all arguments as signed integers,
    then it's fairly easy to give a solution:


    #include <stddef.h>
    #include <stdint.h>

    #define min(...) ( \
    (min)( HOW_MANY( __VA_ARGS__ ), (intmax_t[]){ __VA_ARGS__ } ) \
    )

    #define HOW_MANY(...) (sizeof ((_Bool[]){ __VA_ARGS__ }) / sizeof (_Bool))

    intmax_t
    (min)( size_t n, intmax_t v[n] ){
    intmax_t r = INTMAX_MAX;
    for( size_t k = 0; k < n; k++ ){
    r = v[k] < r ? v[k] : r;
    }
    return r;
    }
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From fir@[email protected] to comp.lang.c on Sun Oct 25 19:04:03 2026
    From Newsgroup: comp.lang.c

    fir pisze:
    bartc pisze:
    On 25/10/2026 11:01, fir wrote:
    ichard Harnden pisze:> On 23/10/2026 06:44, fir wrote:
    when thinkong on variadic functions not much come to mind but
    only recently i noticed min or max would be good for variadic
    ;
    the ai wrote me such variadic min
    ;
    I don't think that I'd bother with stdarg at all.
    ;
    Just use a string of ints ...
    ;
    int min(const int *n)
    {
    ;      int m = INT_MAX;
    ;
    ;      while ( *n )
    ;      {
    ;          if ( *n < m ) m = *n;
    ;
    ;          n++;
    ;      }
    ;
    ;      return m;
    }
    ;
    int a=Min(4,10,3,7,-2);  // -2
    ;
    int a = min((int[]){10,3,7,-2}));
    ;
    ;
    ;
    such thig should be builtin nd automatic there are hovever some
    decisions toconclude for example

    foo(float3 x);
    goo(float3* x);

    foo({1,2,4.});

    goo({2,3,4}) or  goo(&{2,3,4})

    or maybe allowing to drop {} at all
    foo(1,2,4.);

    So:

        foo(float3 x, float3 y, int n);

    can be called as:

        foo(1, 2, 3, 4, 5, 6, 7);


    well its a question what to put as a mandatory.. i dont know yet, but
    for sure thise automatic 'fitting' would be somewhat good

    some can write

    foo({1, 2, 3}, {4, 5, 6}, 7);

    and you again present anti-c philosophy

    c allows you write programs ale obfuscated c contests..in your philosofy
    you would forbide it all? forcing codes not have syttaktic shortcuts?

    i totally not agree to such philosophy

    (though its not always clear whay s good shortcut/hack c way and what is not)



    It's so easy to see where one argument ends and another begins! And
    this is the simplest possible set of arguments.

    Still, C has prior art here:

        typedef struct {float x,y,z;} float3;
        typedef struct {float3 a, b; int c;} T;

        T x = {1, 2, 3, 4, 5, 6, 7};

    So that would fit right in!



    recent state of my rasterizer toying btw

    https://www.youtube.com/watch?v=xERLKVTV9s8

    those pices of geometry was generated by ai ...sadly when adding more
    geometry the rasterizer get slowing down ofs..and i have no best cpu

    though modern are maybe 2-3 times faster at most i guess
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@[email protected] to comp.lang.c on Sun Oct 25 13:49:53 2026
    From Newsgroup: comp.lang.c

    On 10/25/2026 11:04 AM, fir wrote:
    fir pisze:
    bartc pisze:
    On 25/10/2026 11:01, fir wrote:
    ichard Harnden pisze:> On 23/10/2026 06:44, fir wrote:
    when thinkong on variadic functions not much come to mind but
    only recently i noticed min or max would be good for variadic
    ;
    the ai wrote me such variadic min
    ;
    I don't think that I'd bother with stdarg at all.
    ;
    Just use a string of ints ...
    ;
    int min(const int *n)
    {
    ;      int m = INT_MAX;
    ;
    ;      while ( *n )
    ;      {
    ;          if ( *n < m ) m = *n;
    ;
    ;          n++;
    ;      }
    ;
    ;      return m;
    }
    ;
    int a=Min(4,10,3,7,-2);  // -2
    ;
    int a = min((int[]){10,3,7,-2}));
    ;
    ;
    ;
    such thig should be builtin nd automatic there are hovever some
    decisions toconclude for example

    foo(float3 x);
    goo(float3* x);

    foo({1,2,4.});

    goo({2,3,4}) or  goo(&{2,3,4})

    or maybe allowing to drop {} at all
    foo(1,2,4.);

    So:

        foo(float3 x, float3 y, int n);

    can be called as:

        foo(1, 2, 3, 4, 5, 6, 7);


    well its a question what to put as a mandatory.. i dont know yet, but
    for sure thise automatic 'fitting' would be somewhat good

    some can write

    foo({1, 2, 3}, {4, 5, 6}, 7);

    and you again present anti-c philosophy

    c allows you write programs ale obfuscated c contests..in your philosofy
    you would forbide it all? forcing codes not have syttaktic shortcuts?

    i totally not agree to such philosophy

    (though its not always clear whay s good shortcut/hack c way and what
    is not)



    It's so easy to see where one argument ends and another begins! And
    this is the simplest possible set of arguments.

    Still, C has prior art here:

        typedef struct {float x,y,z;} float3;
        typedef struct {float3 a, b; int c;} T;

        T x = {1, 2, 3, 4, 5, 6, 7};

    So that would fit right in!



    recent state of my rasterizer toying btw

    https://www.youtube.com/watch?v=xERLKVTV9s8

    those pices of geometry was generated by ai ...sadly when adding more geometry the rasterizer get slowing down ofs..and i have no best cpu

    Too bad you need an AI to make it for you.


    though modern are maybe 2-3 times faster at most i guess

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@[email protected] to comp.lang.c on Sun Oct 25 14:44:15 2026
    From Newsgroup: comp.lang.c

    On 10/25/2026 1:49 PM, Chris M. Thomasson wrote:
    On 10/25/2026 11:04 AM, fir wrote:
    fir pisze:
    bartc pisze:
    On 25/10/2026 11:01, fir wrote:
    ichard Harnden pisze:> On 23/10/2026 06:44, fir wrote:
    when thinkong on variadic functions not much come to mind but
    only recently i noticed min or max would be good for variadic
    ;
    the ai wrote me such variadic min
    ;
    I don't think that I'd bother with stdarg at all.
    ;
    Just use a string of ints ...
    ;
    int min(const int *n)
    {
    ;      int m = INT_MAX;
    ;
    ;      while ( *n )
    ;      {
    ;          if ( *n < m ) m = *n;
    ;
    ;          n++;
    ;      }
    ;
    ;      return m;
    }
    ;
    int a=Min(4,10,3,7,-2);  // -2
    ;
    int a = min((int[]){10,3,7,-2}));
    ;
    ;
    ;
    such thig should be builtin nd automatic there are hovever some
    decisions toconclude for example

    foo(float3 x);
    goo(float3* x);

    foo({1,2,4.});

    goo({2,3,4}) or  goo(&{2,3,4})

    or maybe allowing to drop {} at all
    foo(1,2,4.);

    So:

        foo(float3 x, float3 y, int n);

    can be called as:

        foo(1, 2, 3, 4, 5, 6, 7);


    well its a question what to put as a mandatory.. i dont know yet, but
    for sure thise automatic 'fitting' would be somewhat good

    some can write

    foo({1, 2, 3}, {4, 5, 6}, 7);

    and you again present anti-c philosophy

    c allows you write programs ale obfuscated c contests..in your philosofy >>> you would forbide it all? forcing codes not have syttaktic shortcuts?

    i totally not agree to such philosophy

    (though its not always clear whay s good shortcut/hack c way and what
    is not)



    It's so easy to see where one argument ends and another begins! And
    this is the simplest possible set of arguments.

    Still, C has prior art here:

        typedef struct {float x,y,z;} float3;
        typedef struct {float3 a, b; int c;} T;

        T x = {1, 2, 3, 4, 5, 6, 7};

    So that would fit right in!



    recent state of my rasterizer toying btw

    https://www.youtube.com/watch?v=xERLKVTV9s8

    those pices of geometry was generated by ai ...sadly when adding more
    geometry the rasterizer get slowing down ofs..and i have no best cpu

    Too bad you need an AI to make it for you.


    though modern are maybe 2-3 times faster at most i guess


    If you want some free models to work with. check out SketchFab.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Lawrence =?iso-8859-13?q?D=FFOliveiro?=@[email protected] to comp.lang.c on Sun Oct 25 21:56:48 2026
    From Newsgroup: comp.lang.c

    On Sun, 25 Oct 2026 14:44:15 -0700, Chris M. Thomasson wrote:

    If you want some free models to work with. check out SketchFab.

    Aren’t they more oriented towards 3D printing?
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Keith Thompson@[email protected] to comp.lang.c on Sun Oct 25 15:43:14 2026
    From Newsgroup: comp.lang.c

    bartc <[email protected]> writes:
    [...]
    I just don't consider unions as a special type at all.

    Well, you're wrong.

    [...]
    --
    Keith Thompson (The_Other_Keith) [email protected]
    void Void(void) { Void(); } /* The recursive call of the void */
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@[email protected] to comp.lang.c on Sun Oct 25 15:58:58 2026
    From Newsgroup: comp.lang.c

    On 10/25/2026 2:56 PM, Lawrence D’Oliveiro wrote:
    On Sun, 25 Oct 2026 14:44:15 -0700, Chris M. Thomasson wrote:

    If you want some free models to work with. check out SketchFab.

    Aren’t they more oriented towards 3D printing?

    Well, fir should know how to load a 3d model and light it. The AI can do
    it for him?
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@[email protected] to comp.lang.c on Sun Oct 25 15:59:30 2026
    From Newsgroup: comp.lang.c

    On 10/25/2026 1:49 PM, Chris M. Thomasson wrote:
    On 10/25/2026 11:04 AM, fir wrote:
    fir pisze:
    bartc pisze:
    On 25/10/2026 11:01, fir wrote:
    ichard Harnden pisze:> On 23/10/2026 06:44, fir wrote:
    when thinkong on variadic functions not much come to mind but
    only recently i noticed min or max would be good for variadic
    ;
    the ai wrote me such variadic min
    ;
    I don't think that I'd bother with stdarg at all.
    ;
    Just use a string of ints ...
    ;
    int min(const int *n)
    {
    ;      int m = INT_MAX;
    ;
    ;      while ( *n )
    ;      {
    ;          if ( *n < m ) m = *n;
    ;
    ;          n++;
    ;      }
    ;
    ;      return m;
    }
    ;
    int a=Min(4,10,3,7,-2);  // -2
    ;
    int a = min((int[]){10,3,7,-2}));
    ;
    ;
    ;
    such thig should be builtin nd automatic there are hovever some
    decisions toconclude for example

    foo(float3 x);
    goo(float3* x);

    foo({1,2,4.});

    goo({2,3,4}) or  goo(&{2,3,4})

    or maybe allowing to drop {} at all
    foo(1,2,4.);

    So:

        foo(float3 x, float3 y, int n);

    can be called as:

        foo(1, 2, 3, 4, 5, 6, 7);


    well its a question what to put as a mandatory.. i dont know yet, but
    for sure thise automatic 'fitting' would be somewhat good

    some can write

    foo({1, 2, 3}, {4, 5, 6}, 7);

    and you again present anti-c philosophy

    c allows you write programs ale obfuscated c contests..in your philosofy >>> you would forbide it all? forcing codes not have syttaktic shortcuts?

    i totally not agree to such philosophy

    (though its not always clear whay s good shortcut/hack c way and what
    is not)



    It's so easy to see where one argument ends and another begins! And
    this is the simplest possible set of arguments.

    Still, C has prior art here:

        typedef struct {float x,y,z;} float3;
        typedef struct {float3 a, b; int c;} T;

        T x = {1, 2, 3, 4, 5, 6, 7};

    So that would fit right in!



    recent state of my rasterizer toying btw

    https://www.youtube.com/watch?v=xERLKVTV9s8

    Not bad.




    those pices of geometry was generated by ai ...sadly when adding more
    geometry the rasterizer get slowing down ofs..and i have no best cpu

    Too bad you need an AI to make it for you.


    though modern are maybe 2-3 times faster at most i guess


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From fir@[email protected] to comp.lang.c on Mon Oct 26 01:32:48 2026
    From Newsgroup: comp.lang.c

    Chris M. Thomasson pisze:
    On 10/25/2026 11:04 AM, fir wrote:
    fir pisze:
    bartc pisze:
    On 25/10/2026 11:01, fir wrote:
    ichard Harnden pisze:> On 23/10/2026 06:44, fir wrote:
    when thinkong on variadic functions not much come to mind but
    only recently i noticed min or max would be good for variadic
    ;
    the ai wrote me such variadic min
    ;
    I don't think that I'd bother with stdarg at all.
    ;
    Just use a string of ints ...
    ;
    int min(const int *n)
    {
    ;      int m = INT_MAX;
    ;
    ;      while ( *n )
    ;      {
    ;          if ( *n < m ) m = *n;
    ;
    ;          n++;
    ;      }
    ;
    ;      return m;
    }
    ;
    int a=Min(4,10,3,7,-2);  // -2
    ;
    int a = min((int[]){10,3,7,-2}));
    ;
    ;
    ;
    such thig should be builtin nd automatic there are hovever some
    decisions toconclude for example

    foo(float3 x);
    goo(float3* x);

    foo({1,2,4.});

    goo({2,3,4}) or  goo(&{2,3,4})

    or maybe allowing to drop {} at all
    foo(1,2,4.);

    So:

        foo(float3 x, float3 y, int n);

    can be called as:

        foo(1, 2, 3, 4, 5, 6, 7);


    well its a question what to put as a mandatory.. i dont know yet, but
    for sure thise automatic 'fitting' would be somewhat good

    some can write

    foo({1, 2, 3}, {4, 5, 6}, 7);

    and you again present anti-c philosophy

    c allows you write programs ale obfuscated c contests..in your philosofy >>> you would forbide it all? forcing codes not have syttaktic shortcuts?

    i totally not agree to such philosophy

    (though its not always clear whay s good shortcut/hack c way and what
    is not)



    It's so easy to see where one argument ends and another begins! And
    this is the simplest possible set of arguments.

    Still, C has prior art here:

        typedef struct {float x,y,z;} float3;
        typedef struct {float3 a, b; int c;} T;

        T x = {1, 2, 3, 4, 5, 6, 7};

    So that would fit right in!



    recent state of my rasterizer toying btw

    https://www.youtube.com/watch?v=xERLKVTV9s8

    those pices of geometry was generated by ai ...sadly when adding more
    geometry the rasterizer get slowing down ofs..and i have no best cpu

    Too bad you need an AI to make it for you.



    you talk like medevial peasnt such your remarks here

    you know for some people accustomed to higher social standards you may
    be perceive you as a bit of a country bumpkin (sorry i dont understand
    this phrase its form translation, i m not quite sure what bumpkin is - i
    meant more like peasent, medevial villager)

    its not quite good to enforce you peasnty belifs on people...especially
    as it seems you totally dont know what youre talkin about

    i already told you so but it seems youre like dont get it


    as to rasterizer its nice to shape the pixell matter..though i need much stronger cpu, i need like 100x stronger..and it doesnt seem i would get it..though GPU in fact maybe might be so

    or meybe i should learn more multithreading and put it on 8 10 or 12
    cores... im not sure but not being experienced in this it seems that rasterisation should be quite good for multithreading - simply run 1/10
    of objects in the scene on 10 cores into 10 output buffers..then "add"
    the buffers... this depth buffers seem ideal for adding

    im not yet sure if it really works that way - but if it does its finally
    a reason to buy a desktop pc iwth many cores




    though modern are maybe 2-3 times faster at most i guess


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From fir@[email protected] to comp.lang.c on Mon Oct 26 01:45:45 2026
    From Newsgroup: comp.lang.c

    fir pisze:
    Chris M. Thomasson pisze:
    On 10/25/2026 11:04 AM, fir wrote:
    fir pisze:
    bartc pisze:
    On 25/10/2026 11:01, fir wrote:
    ichard Harnden pisze:> On 23/10/2026 06:44, fir wrote:
    when thinkong on variadic functions not much come to mind but >>>>>>  >> only recently i noticed min or max would be good for variadic >>>>>>  >>
    the ai wrote me such variadic min
    ;
    I don't think that I'd bother with stdarg at all.
    ;
    Just use a string of ints ...
    ;
    int min(const int *n)
    {
    ;      int m = INT_MAX;
    ;
    ;      while ( *n )
    ;      {
    ;          if ( *n < m ) m = *n;
    ;
    ;          n++;
    ;      }
    ;
    ;      return m;
    }
    ;
    int a=Min(4,10,3,7,-2);  // -2
    ;
    int a = min((int[]){10,3,7,-2}));
    ;
    ;
    ;
    such thig should be builtin nd automatic there are hovever some
    decisions toconclude for example

    foo(float3 x);
    goo(float3* x);

    foo({1,2,4.});

    goo({2,3,4}) or  goo(&{2,3,4})

    or maybe allowing to drop {} at all
    foo(1,2,4.);

    So:

        foo(float3 x, float3 y, int n);

    can be called as:

        foo(1, 2, 3, 4, 5, 6, 7);


    well its a question what to put as a mandatory.. i dont know yet,
    but for sure thise automatic 'fitting' would be somewhat good

    some can write

    foo({1, 2, 3}, {4, 5, 6}, 7);

    and you again present anti-c philosophy

    c allows you write programs ale obfuscated c contests..in your
    philosofy
    you would forbide it all? forcing codes not have syttaktic shortcuts?

    i totally not agree to such philosophy

    (though its not always clear whay s good shortcut/hack c way and
    what is not)



    It's so easy to see where one argument ends and another begins! And >>>>> this is the simplest possible set of arguments.

    Still, C has prior art here:

        typedef struct {float x,y,z;} float3;
        typedef struct {float3 a, b; int c;} T;

        T x = {1, 2, 3, 4, 5, 6, 7};

    So that would fit right in!



    recent state of my rasterizer toying btw

    https://www.youtube.com/watch?v=xERLKVTV9s8

    those pices of geometry was generated by ai ...sadly when adding more
    geometry the rasterizer get slowing down ofs..and i have no best cpu

    Too bad you need an AI to make it for you.



    you talk like medevial peasnt such your remarks here

    you know for some people accustomed to higher social standards you may
    be perceive you as a bit of a country bumpkin (sorry i dont understand
    this phrase its form translation, i m not quite sure what bumpkin is - i meant more like peasent, medevial villager)

    its not quite good to enforce you peasnty belifs on people...especially
    as it seems you totally dont know what youre talkin about

    i already told you so but it seems youre like dont get it


    as to rasterizer its nice to shape the pixell matter..though i need much stronger cpu, i need like 100x stronger..and it doesnt seem i would get it..though GPU in fact maybe might be so

    or meybe i should learn more multithreading and put it on 8 10 or 12
    cores... im not sure but not being experienced in this it seems that rasterisation should be quite good for multithreading - simply run 1/10
    of objects in the scene on 10 cores into 10 output buffers..then "add"
    the buffers... this depth buffers seem ideal for adding

    im not yet sure if it really works that way - but if it does its finally
    a reason to buy a desktop pc iwth many cores


    also maybe kinda interesting conclusion as to code:

    i tried in fact 3 versions of this rasterizer : fixed points, ints
    (mixed with floats), and floats..and what showed best?

    meybe on older cpus fixedpoints or ints were notably faster but even on
    my old i3 cpu it showed float rasterizer is not notably slower and is
    better (long ver y thin triangles flick, and on floats not - so
    surprisingly float version showet the best
    (but on older cpu, even like core 2 i got some yeras ago probaby the
    mixed int+floats was faster enough to be worth it...


    it seems not now though i was not doing many tests - and posssibly its
    good becouse on floats its quite easier to write things



    though modern are maybe 2-3 times faster at most i guess



    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Lawrence =?iso-8859-13?q?D=FFOliveiro?=@[email protected] to comp.lang.c on Mon Oct 26 00:52:26 2026
    From Newsgroup: comp.lang.c

    On Sun, 25 Oct 2026 15:58:58 -0700, Chris M. Thomasson wrote:

    On 10/25/2026 2:56 PM, Lawrence D’Oliveiro wrote:

    On Sun, 25 Oct 2026 14:44:15 -0700, Chris M. Thomasson wrote:

    If you want some free models to work with. check out SketchFab.

    Aren’t they more oriented towards 3D printing?

    Well, fir should know how to load a 3d model and light it.

    There are better sources of models for on-screen work.

    Sci-fi fan? How about this <https://trekmeshes.eu/>.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@[email protected] to comp.lang.c on Sun Oct 25 19:31:06 2026
    From Newsgroup: comp.lang.c

    On 10/25/2026 5:32 PM, fir wrote:
    Chris M. Thomasson pisze:
    On 10/25/2026 11:04 AM, fir wrote:
    fir pisze:
    bartc pisze:
    On 25/10/2026 11:01, fir wrote:
    ichard Harnden pisze:> On 23/10/2026 06:44, fir wrote:
    when thinkong on variadic functions not much come to mind but >>>>>>  >> only recently i noticed min or max would be good for variadic >>>>>>  >>
    the ai wrote me such variadic min
    ;
    I don't think that I'd bother with stdarg at all.
    ;
    Just use a string of ints ...
    ;
    int min(const int *n)
    {
    ;      int m = INT_MAX;
    ;
    ;      while ( *n )
    ;      {
    ;          if ( *n < m ) m = *n;
    ;
    ;          n++;
    ;      }
    ;
    ;      return m;
    }
    ;
    int a=Min(4,10,3,7,-2);  // -2
    ;
    int a = min((int[]){10,3,7,-2}));
    ;
    ;
    ;
    such thig should be builtin nd automatic there are hovever some
    decisions toconclude for example

    foo(float3 x);
    goo(float3* x);

    foo({1,2,4.});

    goo({2,3,4}) or  goo(&{2,3,4})

    or maybe allowing to drop {} at all
    foo(1,2,4.);

    So:

        foo(float3 x, float3 y, int n);

    can be called as:

        foo(1, 2, 3, 4, 5, 6, 7);


    well its a question what to put as a mandatory.. i dont know yet,
    but for sure thise automatic 'fitting' would be somewhat good

    some can write

    foo({1, 2, 3}, {4, 5, 6}, 7);

    and you again present anti-c philosophy

    c allows you write programs ale obfuscated c contests..in your
    philosofy
    you would forbide it all? forcing codes not have syttaktic shortcuts?

    i totally not agree to such philosophy

    (though its not always clear whay s good shortcut/hack c way and
    what is not)



    It's so easy to see where one argument ends and another begins! And >>>>> this is the simplest possible set of arguments.

    Still, C has prior art here:

        typedef struct {float x,y,z;} float3;
        typedef struct {float3 a, b; int c;} T;

        T x = {1, 2, 3, 4, 5, 6, 7};

    So that would fit right in!



    recent state of my rasterizer toying btw

    https://www.youtube.com/watch?v=xERLKVTV9s8

    those pices of geometry was generated by ai ...sadly when adding more
    geometry the rasterizer get slowing down ofs..and i have no best cpu

    Too bad you need an AI to make it for you.



    you talk like medevial peasnt such your remarks here

    you know for some people accustomed to higher social standards you may
    be perceive you as a bit of a country bumpkin (sorry i dont understand
    this phrase its form translation, i m not quite sure what bumpkin is - i meant more like peasent, medevial villager)

    its not quite good to enforce you peasnty belifs on people...especially
    as it seems you totally dont know what youre talkin about

    i already told you so but it seems youre like dont get it


    as to rasterizer its nice to shape the pixell matter..though i need much stronger cpu, i need like 100x stronger..and it doesnt seem i would get it..though GPU in fact maybe might be so

    or meybe i should learn more multithreading and put it on 8 10 or 12
    cores... im not sure but not being experienced in this it seems that rasterisation should be quite good for multithreading - simply run 1/10
    of objects in the scene on 10 cores into 10 output buffers..then "add"
    the buffers... this depth buffers seem ideal for adding

    im not yet sure if it really works that way - but if it does its finally
    a reason to buy a desktop pc iwth many cores




    though modern are maybe 2-3 times faster at most i guess



    Not really, just buy something with a half way decent GPU, or even a
    crappy one. NVIDIA has some cheap ones. The learn how to code for it.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From fir@[email protected] to comp.lang.c on Mon Oct 26 12:27:12 2026
    From Newsgroup: comp.lang.c

    Chris M. Thomasson pisze:
    On 10/25/2026 5:32 PM, fir wrote:
    Chris M. Thomasson pisze:
    On 10/25/2026 11:04 AM, fir wrote:
    fir pisze:
    bartc pisze:
    On 25/10/2026 11:01, fir wrote:
    ichard Harnden pisze:> On 23/10/2026 06:44, fir wrote:
    when thinkong on variadic functions not much come to mind but >>>>>>>  >> only recently i noticed min or max would be good for variadic >>>>>>>  >>
    the ai wrote me such variadic min
    ;
    I don't think that I'd bother with stdarg at all.
    ;
    Just use a string of ints ...
    ;
    int min(const int *n)
    {
    ;      int m = INT_MAX;
    ;
    ;      while ( *n )
    ;      {
    ;          if ( *n < m ) m = *n;
    ;
    ;          n++;
    ;      }
    ;
    ;      return m;
    }
    ;
    int a=Min(4,10,3,7,-2);  // -2
    ;
    int a = min((int[]){10,3,7,-2}));
    ;
    ;
    ;
    such thig should be builtin nd automatic there are hovever some >>>>>>> decisions toconclude for example

    foo(float3 x);
    goo(float3* x);

    foo({1,2,4.});

    goo({2,3,4}) or  goo(&{2,3,4})

    or maybe allowing to drop {} at all
    foo(1,2,4.);

    So:

        foo(float3 x, float3 y, int n);

    can be called as:

        foo(1, 2, 3, 4, 5, 6, 7);


    well its a question what to put as a mandatory.. i dont know yet,
    but for sure thise automatic 'fitting' would be somewhat good

    some can write

    foo({1, 2, 3}, {4, 5, 6}, 7);

    and you again present anti-c philosophy

    c allows you write programs ale obfuscated c contests..in your
    philosofy
    you would forbide it all? forcing codes not have syttaktic shortcuts? >>>>>
    i totally not agree to such philosophy

    (though its not always clear whay s good shortcut/hack c way and
    what is not)



    It's so easy to see where one argument ends and another begins!
    And this is the simplest possible set of arguments.

    Still, C has prior art here:

        typedef struct {float x,y,z;} float3;
        typedef struct {float3 a, b; int c;} T;

        T x = {1, 2, 3, 4, 5, 6, 7};

    So that would fit right in!



    recent state of my rasterizer toying btw

    https://www.youtube.com/watch?v=xERLKVTV9s8

    those pices of geometry was generated by ai ...sadly when adding
    more geometry the rasterizer get slowing down ofs..and i have no
    best cpu

    Too bad you need an AI to make it for you.



    you talk like medevial peasnt such your remarks here

    you know for some people accustomed to higher social standards you may
    be perceive you as a bit of a country bumpkin (sorry i dont understand
    this phrase its form translation, i m not quite sure what bumpkin is -
    i meant more like peasent, medevial villager)

    its not quite good to enforce you peasnty belifs on
    people...especially as it seems you totally dont know what youre
    talkin about

    i already told you so but it seems youre like dont get it


    as to rasterizer its nice to shape the pixell matter..though i need much
    stronger cpu, i need like 100x stronger..and it doesnt seem i would
    get it..though GPU in fact maybe might be so

    or meybe i should learn more multithreading and put it on 8 10 or 12
    cores... im not sure but not being experienced in this it seems that
    rasterisation should be quite good for multithreading - simply run 1/10
    of objects in the scene on 10 cores into 10 output buffers..then "add"
    the buffers... this depth buffers seem ideal for adding

    im not yet sure if it really works that way - but if it does its
    finally a reason to buy a desktop pc iwth many cores




    though modern are maybe 2-3 times faster at most i guess



    Not really, just buy something with a half way decent GPU, or even a
    crappy one. NVIDIA has some cheap ones. The learn how to code for it.

    there is no chea nvidia GPU at stores right now.. i maybe should stil
    wait if they get nootably cheaper and buy some

    more important gpu koding is different kind of coding... this rasterizer
    btw i coded in formal C now (as ported from old version c via c++)
    though those linker errors when i
    i call i function name which i it cant find annoys me i could say
    (in c via c++ thre eas no such thing as i remember)


    as to AI it so much grat i could probably name a list of 100
    (or at least 30) big advantages of it where 2-3 could be suffice to use it

    you noticed i criticize your 'peasenty' attitude but really learn what
    you talkin about becouse stating things when you got no idea what youre
    talkin about is absolutely not usenet is for

    usenet was always good people here focus on validating opinions and
    what you say like that: i have no idea what im talking about yet i
    will say opposite to truth is not standable here

    take given point you learned if something is wrong in that point
    criticize it in valid ay if you must ... or praise it if its good
    becouse this seconnd attempt is arso quite valueable i such new topic
    when people need to learn that

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From fir@[email protected] to comp.lang.c on Mon Oct 26 12:30:39 2026
    From Newsgroup: comp.lang.c

    fir pisze:
    Chris M. Thomasson pisze:
    On 10/25/2026 5:32 PM, fir wrote:
    Chris M. Thomasson pisze:
    On 10/25/2026 11:04 AM, fir wrote:
    fir pisze:
    bartc pisze:
    On 25/10/2026 11:01, fir wrote:
    ichard Harnden pisze:> On 23/10/2026 06:44, fir wrote:
    when thinkong on variadic functions not much come to mind but >>>>>>>>  >> only recently i noticed min or max would be good for variadic >>>>>>>>  >>
    the ai wrote me such variadic min
    ;
    I don't think that I'd bother with stdarg at all.
    ;
    Just use a string of ints ...
    ;
    int min(const int *n)
    {
    ;      int m = INT_MAX;
    ;
    ;      while ( *n )
    ;      {
    ;          if ( *n < m ) m = *n;
    ;
    ;          n++;
    ;      }
    ;
    ;      return m;
    }
    ;
    int a=Min(4,10,3,7,-2);  // -2
    ;
    int a = min((int[]){10,3,7,-2}));
    ;
    ;
    ;
    such thig should be builtin nd automatic there are hovever some >>>>>>>> decisions toconclude for example

    foo(float3 x);
    goo(float3* x);

    foo({1,2,4.});

    goo({2,3,4}) or  goo(&{2,3,4})

    or maybe allowing to drop {} at all
    foo(1,2,4.);

    So:

        foo(float3 x, float3 y, int n);

    can be called as:

        foo(1, 2, 3, 4, 5, 6, 7);


    well its a question what to put as a mandatory.. i dont know yet, >>>>>> but for sure thise automatic 'fitting' would be somewhat good

    some can write

    foo({1, 2, 3}, {4, 5, 6}, 7);

    and you again present anti-c philosophy

    c allows you write programs ale obfuscated c contests..in your
    philosofy
    you would forbide it all? forcing codes not have syttaktic shortcuts? >>>>>>
    i totally not agree to such philosophy

    (though its not always clear whay s good shortcut/hack c way and
    what is not)



    It's so easy to see where one argument ends and another begins! >>>>>>> And this is the simplest possible set of arguments.

    Still, C has prior art here:

        typedef struct {float x,y,z;} float3;
        typedef struct {float3 a, b; int c;} T;

        T x = {1, 2, 3, 4, 5, 6, 7};

    So that would fit right in!



    recent state of my rasterizer toying btw

    https://www.youtube.com/watch?v=xERLKVTV9s8

    those pices of geometry was generated by ai ...sadly when adding
    more geometry the rasterizer get slowing down ofs..and i have no
    best cpu

    Too bad you need an AI to make it for you.



    you talk like medevial peasnt such your remarks here

    you know for some people accustomed to higher social standards you
    may be perceive you as a bit of a country bumpkin (sorry i dont
    understand this phrase its form translation, i m not quite sure what
    bumpkin is - i meant more like peasent, medevial villager)

    its not quite good to enforce you peasnty belifs on
    people...especially as it seems you totally dont know what youre
    talkin about

    i already told you so but it seems youre like dont get it


    as to rasterizer its nice to shape the pixell matter..though i need much >>> stronger cpu, i need like 100x stronger..and it doesnt seem i would
    get it..though GPU in fact maybe might be so

    or meybe i should learn more multithreading and put it on 8 10 or 12
    cores... im not sure but not being experienced in this it seems that
    rasterisation should be quite good for multithreading - simply run 1/10
    of objects in the scene on 10 cores into 10 output buffers..then "add"
    the buffers... this depth buffers seem ideal for adding

    im not yet sure if it really works that way - but if it does its
    finally a reason to buy a desktop pc iwth many cores




    though modern are maybe 2-3 times faster at most i guess



    Not really, just buy something with a half way decent GPU, or even a
    crappy one. NVIDIA has some cheap ones. The learn how to code for it.

    there is no chea nvidia GPU at stores right now.. i maybe should stil
    wait if they get nootably cheaper and buy some

    more important gpu koding is different kind of coding... this rasterizer
    btw i coded in formal C now (as ported from old version c via c++)
    though those linker errors when i
     i call i function name which i it cant find annoys me i could say
    (in c via c++ thre eas no such thing as i remember)


    as to AI it so much grat i could probably name a list of 100
    (or at least 30) big advantages of it where 2-3 could be suffice to use it

    you noticed i criticize your 'peasenty' attitude but really learn what
    you talkin about becouse stating things when you got no idea what youre talkin about is absolutely not usenet is for

    usenet was always good people here focus on validating opinions and
    what you say   like that: i have no idea what im talking about yet i
    will say opposite to truth is not standable  here

    take given point you learned if something is wrong in that point
    criticize it in valid ay if you must ... or praise it if its good
    becouse this seconnd attempt is arso quite valueable i such new topic
    when people need to learn that

    dont know how to do it - download chatgpt from windows store or
    (slightly worse imo) open t in web and ask the programming speific
    questions you will be impressed 0 instead of talkin bulshit on
    the net as many do

    (ofc paying questions may be a problem but now yhe free versions go on
    quite well - and i hope it will stay this way becouse if those firms use
    so much public material made by anybody they should be obliged to return
    part of it as free decend versions im (it should be even regulated by
    law maybe as some kind of payback to society... but for now its ok)
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From bartc@[email protected] to comp.lang.c on Mon Oct 26 12:07:51 2026
    From Newsgroup: comp.lang.c

    On 26/10/2026 11:30, fir wrote:


    take given point you learned if something is wrong in that point
    criticize it in valid ay if you must ... or praise it if its good
    becouse this seconnd attempt is arso quite valueable i such new topic
    when people need to learn that

    dont know how to do it - download chatgpt from windows store or
    (slightly worse imo) open t in web and ask the programming speific
    questions you will be impressed 0 instead of talkin bulshit on
    the net as many do

    (ofc paying questions may be a problem but now yhe free versions go on
    quite well - and i hope it will stay this way

    It won't. Get everyone hooked first then start charging.

    becouse if those firms use
    so much public material made by anybody they should be obliged to return part of it as free decend versions im (it should be even regulated by
    law maybe as some kind of payback to society... but for now its ok)

    Take whatever application it is that AI is helping you create. Suppose
    you found that somebody had already created a working application that
    worked exactly as you wanted (maybe using AI more effectively!), and it
    was a free download.

    What you stop your development and just use that product? Or is
    development the interesting bit?

    Take all these ideas about new language features that you have posted
    about extensively. Did you know that AI can be used to help devise new languages and even implement them for you?

    Would you do that too? (Since nobody here is going to develop your dream language for you. I've already done mine.)

    But then, if AI is going to be writing the code anyway, what difference
    does it make what language it generates? It might as well generate
    machine code directly.

    Also, is your product a game that you have to try and win? Would you
    tell AI to play the game to win it for you? If not, why not?

    Can you not see that taking AI's capabilities to the extremes makes it
    all pointless? At least, for recreational purposes.

    Its other main purpose seems to be taking over as many people's jobs as possible.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From fir@[email protected] to comp.lang.c on Mon Oct 26 13:51:29 2026
    From Newsgroup: comp.lang.c

    bartc pisze:
    On 26/10/2026 11:30, fir wrote:


    take given point you learned if something is wrong in that point
    criticize it in valid ay if you must ... or praise it if its good
    becouse this seconnd attempt is arso quite valueable i such new topic
    when people need to learn that

    dont know how to do it - download chatgpt from windows store or
    (slightly worse imo) open t in web and ask the programming speific
    questions you will be impressed 0 instead of talkin bulshit on
    the net as many do

    (ofc paying questions may be a problem but now yhe free versions go on
    quite well - and i hope it will stay this way

    It won't. Get everyone hooked first then start charging.

     becouse if those firms use
    so much public material made by anybody they should be obliged to
    return part of it as free decend versions im (it should be even
    regulated by law maybe as some kind of payback to society... but for
    now its ok)

    Take whatever application it is that AI is helping you create. Suppose
    you found that somebody had already created a working application that worked exactly as you wanted (maybe using AI more effectively!), and it
    was a free download.

    What you stop your development and just use that product? Or is
    development the interesting bit?

    Take all these ideas about new language features that you have posted
    about extensively. Did you know that AI can be used to help devise new languages and even implement them for you?

    Would you do that too? (Since nobody here is going to develop your dream language for you. I've already done mine.)

    But then, if AI is going to be writing the code anyway, what difference
    does it make what language it generates? It might as well generate
    machine code directly.

    Also, is your product a game that you have to try and win? Would you
    tell AI to play the game to win it for you? If not, why not?

    Can you not see that taking AI's capabilities to the extremes makes it
    all pointless? At least, for recreational purposes.

    Its other main purpose seems to be taking over as many people's jobs as possible.

    world needs to work to be done not to work to be done + eople suffer
    sittin doin it too much ;c

    ai just helps work be done so what is the problem here?
    i generally dont see any problem


    alos you you think i ame doing something and someone ele was doin it
    aith ai... overally if you do things it is so called combinatoric
    explosion or maybe more combinatoric hyperexplosion even ai cant fit
    in exact the same what someone could be doing imo as if you only need to
    take 100 binary decisions then te chance is 1/2^100 and someone takes
    even more decisions and they are non binary


    ofsc ai eventaully could take some other better than yours but if so
    it just sis other thing

    overally people have absolutely crazy opinions here..its liek someone
    gave you milion dollars and you will be screaming "its bad" its takin my
    job (or other weird things)..it takes jobs ofc but as the job will be
    done what is the problem - if someone really loves such kind of jibs
    they may do it eventually for no money just as a kind of Historical
    reenactors group

    i may understood its pitty no people ride in a horse-drawn carriage
    but if someone get back to it i guess it would show its not so much
    good

    besides ai is an option liek many things in life, i just love my chat
    gpt app

    really you should try if you not used it its tptally amazing wspecially
    in coding
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From fir@[email protected] to comp.lang.c on Mon Oct 26 14:00:34 2026
    From Newsgroup: comp.lang.c

    fir pisze:
    bartc pisze:
    On 26/10/2026 11:30, fir wrote:


    take given point you learned if something is wrong in that point
    criticize it in valid ay if you must ... or praise it if its good
    becouse this seconnd attempt is arso quite valueable i such new
    topic when people need to learn that

    dont know how to do it - download chatgpt from windows store or
    (slightly worse imo) open t in web and ask the programming speific
    questions you will be impressed 0 instead of talkin bulshit on
    the net as many do

    (ofc paying questions may be a problem but now yhe free versions go
    on quite well - and i hope it will stay this way

    It won't. Get everyone hooked first then start charging.

      becouse if those firms use
    so much public material made by anybody they should be obliged to
    return part of it as free decend versions im (it should be even
    regulated by law maybe as some kind of payback to society... but for
    now its ok)

    Take whatever application it is that AI is helping you create. Suppose
    you found that somebody had already created a working application that
    worked exactly as you wanted (maybe using AI more effectively!), and
    it was a free download.

    What you stop your development and just use that product? Or is
    development the interesting bit?

    Take all these ideas about new language features that you have posted
    about extensively. Did you know that AI can be used to help devise new
    languages and even implement them for you?

    Would you do that too? (Since nobody here is going to develop your
    dream language for you. I've already done mine.)

    But then, if AI is going to be writing the code anyway, what
    difference does it make what language it generates? It might as well
    generate machine code directly.

    Also, is your product a game that you have to try and win? Would you
    tell AI to play the game to win it for you? If not, why not?

    Can you not see that taking AI's capabilities to the extremes makes it
    all pointless? At least, for recreational purposes.

    Its other main purpose seems to be taking over as many people's jobs
    as possible.

    world needs to work to be done not to work to be done + eople suffer
    sittin doin it too much ;c

    ai just helps work be done so what is the problem here?
    i generally dont see any problem


    alos you you think i ame doing something and someone ele was doin it
    aith ai... overally if you do things it is so called combinatoric
    explosion or maybe more combinatoric hyperexplosion even ai cant fit
    in exact the same what someone could be doing imo as if you only need to take 100 binary decisions then te chance is 1/2^100 and someone takes
    even more decisions and they are non binary


    ofsc ai eventaully could take some other better than yours but if so
    it just sis other thing

    overally people have absolutely crazy opinions here..its liek someone
    gave you milion dollars and you will be screaming "its bad" its takin my
    job (or other weird things)..it takes jobs ofc but as the job will be
    done what is the problem - if someone really loves such kind of jibs
    they may do it eventually for no money just as a kind of Historical reenactors group

    i may understood its pitty no people ride in a horse-drawn carriage
    but if someone get back to it i guess it would show its not so much
    good

    besides ai is an option liek many things in life, i just love my chat
    gpt app

    really you should try if you not used it its tptally amazing wspecially
    in coding

    nota also AI is not good in ALL things..i for example observed its good
    when there is soeta wll defined problem but if you tell it to design
    solution for a bit vague problem its not necessary you get answer better
    than you would design it

    like say design good "something" (i dont know d game/ or routine for npc behaviour..etc..such kinda not quite defined things)..those design it
    takes are not necessary the best..whough thay may be good as start

    its quite fresh thing this ai so im not sure if its weakneses and strong
    sides are alteady reckognized (also for example by me)..so mabe things
    will show.. but as what i noticed its not like it gaves you best
    solution for anything but what it gave in various topics is amazing/
    amazingly helpfull
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From fir@[email protected] to comp.lang.c on Mon Oct 26 14:06:58 2026
    From Newsgroup: comp.lang.c

    fir pisze:
    fir pisze:
    bartc pisze:
    On 26/10/2026 11:30, fir wrote:


    take given point you learned if something is wrong in that point
    criticize it in valid ay if you must ... or praise it if its good
    becouse this seconnd attempt is arso quite valueable i such new
    topic when people need to learn that

    dont know how to do it - download chatgpt from windows store or
    (slightly worse imo) open t in web and ask the programming speific
    questions you will be impressed 0 instead of talkin bulshit on
    the net as many do

    (ofc paying questions may be a problem but now yhe free versions go
    on quite well - and i hope it will stay this way

    It won't. Get everyone hooked first then start charging.

      becouse if those firms use
    so much public material made by anybody they should be obliged to
    return part of it as free decend versions im (it should be even
    regulated by law maybe as some kind of payback to society... but for
    now its ok)

    Take whatever application it is that AI is helping you create.
    Suppose you found that somebody had already created a working
    application that worked exactly as you wanted (maybe using AI more
    effectively!), and it was a free download.

    What you stop your development and just use that product? Or is
    development the interesting bit?

    Take all these ideas about new language features that you have posted
    about extensively. Did you know that AI can be used to help devise
    new languages and even implement them for you?

    Would you do that too? (Since nobody here is going to develop your
    dream language for you. I've already done mine.)

    But then, if AI is going to be writing the code anyway, what
    difference does it make what language it generates? It might as well
    generate machine code directly.

    Also, is your product a game that you have to try and win? Would you
    tell AI to play the game to win it for you? If not, why not?

    Can you not see that taking AI's capabilities to the extremes makes
    it all pointless? At least, for recreational purposes.

    Its other main purpose seems to be taking over as many people's jobs
    as possible.

    world needs to work to be done not to work to be done + eople suffer
    sittin doin it too much ;c

    ai just helps work be done so what is the problem here?
    i generally dont see any problem


    alos you you think i ame doing something and someone ele was doin it
    aith ai... overally if you do things it is so called combinatoric
    explosion or maybe more combinatoric hyperexplosion even ai cant fit
    in exact the same what someone could be doing imo as if you only need
    to take 100 binary decisions then te chance is 1/2^100 and someone takes
    even more decisions and they are non binary


    ofsc ai eventaully could take some other better than yours but if so
    it just sis other thing

    overally people have absolutely crazy opinions here..its liek someone
    gave you milion dollars and you will be screaming "its bad" its takin
    my job (or other weird things)..it takes jobs ofc but as the job will
    be done what is the problem - if someone really loves such kind of
    jibs they may do it eventually for no money just as a kind of
    Historical reenactors group

    i may understood its pitty no people ride in a horse-drawn carriage
    but if someone get back to it i guess it would show its not so much
    good

    besides ai is an option liek many things in life, i just love my chat
    gpt app

    really you should try if you not used it its tptally amazing
    wspecially in coding

    nota also AI is not good in ALL things..i for example observed its good
    when there is soeta wll defined problem but if you tell it to design solution for a bit vague problem its not necessary you get answer better than you would design it

    like say design good "something" (i dont know d game/ or routine for npc behaviour..etc..such kinda not quite defined things)..those design it
    takes are not necessary the best..whough thay may be good as start

    its quite fresh thing this ai so im not sure if its weakneses and strong sides are alteady reckognized (also for example by me)..so mabe things
    will show.. but as what i noticed its not like it gaves you best
    solution for anything but what it gave in various topics is amazing/ amazingly helpfull

    imo some people should accept that (like here on this group, its my good advice) AND just go into details inside it as its very good think worth discussing and studying

    if soem like coding in c or likes c topic as language imo it should also
    like learning talking with ai and what he can get with that

    (id someone is to pold or something that nothing is interesting to him i
    can do nothing, though fortunallelly it shows i not yet obtained that
    point fortunatelly - and i find such tjings quite interesting)

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From bartc@[email protected] to comp.lang.c on Mon Oct 26 14:09:18 2026
    From Newsgroup: comp.lang.c

    On 26/10/2026 12:51, fir wrote:
    bartc pisze:

    Can you not see that taking AI's capabilities to the extremes makes it
    all pointless? At least, for recreational purposes.

    Its other main purpose seems to be taking over as many people's jobs
    as possible.

    overally people have absolutely crazy opinions here..its liek someone
    gave you milion dollars and you will be screaming "its bad"

    Actually yes. What would happen if /everybody/ was given a million
    dollars? Think about it.


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From fir@[email protected] to comp.lang.c on Mon Oct 26 15:15:18 2026
    From Newsgroup: comp.lang.c

    bartc pisze:
    On 26/10/2026 12:51, fir wrote:
    bartc pisze:

    Can you not see that taking AI's capabilities to the extremes makes
    it all pointless? At least, for recreational purposes.

    Its other main purpose seems to be taking over as many people's jobs
    as possible.

    overally people have absolutely crazy opinions here..its liek someone
    gave you milion dollars and you will be screaming "its bad"

    Actually yes. What would happen if /everybody/ was given a million
    dollars? Think about it.


    this is a million dolars ov value not empty paper money, ai gives such
    value that 1 milion per capita is imo quite comparable

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From bartc@[email protected] to comp.lang.c on Mon Oct 26 14:28:34 2026
    From Newsgroup: comp.lang.c

    On 26/10/2026 14:15, fir wrote:
    bartc pisze:
    On 26/10/2026 12:51, fir wrote:
    bartc pisze:

    Can you not see that taking AI's capabilities to the extremes makes
    it all pointless? At least, for recreational purposes.

    Its other main purpose seems to be taking over as many people's jobs
    as possible.

    overally people have absolutely crazy opinions here..its liek someone
    gave you milion dollars and you will be screaming "its bad"

    Actually yes. What would happen if /everybody/ was given a million
    dollars? Think about it.


    this is a million dolars ov value not empty paper money, ai gives such
    value that 1 milion per capita is imo quite comparable


    Well, $1m wouldn't have quite as much value if every individual on earth
    was a millionaire.

    But the first thing that would happen is that most people would not
    bother going to work (because they're now rich!) and everything would
    stop working.

    Likely followed by hyperinflation.

    Actually, if you type in: "suppose everybody everybody was given
    $1000000" into google, your beloved AI gives the same sort of picture.

    Namely (it goes into a lot more detail):

    Instant Hyperinflation
    Supply Chain and Labour Collapse
    Destruction of Savings and Debt

    Of course, if it was just me, I'd take it! And if I was the only person
    on earth with access to AI, that would also be invaluable.


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From fir@[email protected] to comp.lang.c on Mon Oct 26 16:48:45 2026
    From Newsgroup: comp.lang.c

    bartc pisze:
    On 26/10/2026 14:15, fir wrote:
    bartc pisze:
    On 26/10/2026 12:51, fir wrote:
    bartc pisze:

    Can you not see that taking AI's capabilities to the extremes makes >>>>> it all pointless? At least, for recreational purposes.

    Its other main purpose seems to be taking over as many people's
    jobs as possible.

    overally people have absolutely crazy opinions here..its liek
    someone gave you milion dollars and you will be screaming "its bad"

    Actually yes. What would happen if /everybody/ was given a million
    dollars? Think about it.


    this is a million dolars ov value not empty paper money, ai gives such
    value that 1 milion per capita is imo quite comparable


    Well, $1m wouldn't have quite as much value if every individual on earth
    was a millionaire.

    But the first thing that would happen is that most people would not
    bother going to work (because they're now rich!) and everything would
    stop working.

    Likely followed by hyperinflation.

    Actually, if you type in: "suppose everybody everybody was given
    $1000000" into google, your beloved AI gives the same sort of picture.

    Namely (it goes into a lot more detail):

      Instant Hyperinflation
      Supply Chain and Labour Collapse
      Destruction of Savings and Debt

    Of course, if it was just me, I'd take it! And if I was the only person
    on earth with access to AI, that would also be invaluable.


    sadly you say nonsense here ...first some complain of losing jobs then switchung to state where there are jobs and people not take it..

    also this is no case of hiperinflation is more liek oposite when work is
    much cheeper things go cheaper

    so many people dont get basics and talk crazy things - i dont want toparticipate in crazy talk
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From fir@[email protected] to comp.lang.c on Mon Oct 26 17:33:20 2026
    From Newsgroup: comp.lang.c

    Lawrence D’Oliveiro pisze:
    On Sun, 25 Oct 2026 15:58:58 -0700, Chris M. Thomasson wrote:

    On 10/25/2026 2:56 PM, Lawrence D’Oliveiro wrote:

    On Sun, 25 Oct 2026 14:44:15 -0700, Chris M. Thomasson wrote:

    If you want some free models to work with. check out SketchFab.

    Aren’t they more oriented towards 3D printing?

    Well, fir should know how to load a 3d model and light it.

    There are better sources of models for on-screen work.

    Sci-fi fan? How about this <https://trekmeshes.eu/>.

    those are prioprietary more or less

    ai generates quite nice models imo

    https://www.youtube.com/watch?v=PeTMNf4Z8q4

    and whats great there are like i get the legal rights to them
    at least in such extnt i can uise them - which is great

    becouse even if tehre are free models in the net i dont like the
    dependencies of such type

    and here is liek i get rights to this stations and ships

    possibly not agressive that someone can generate the same or close and
    he has also rights to thuis and its also very good as i dont like
    agresive copyrights

    but startrek is ok and i could eventually even download and load thse
    models just tos see how it look
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From bartc@[email protected] to comp.lang.c on Mon Oct 26 16:36:18 2026
    From Newsgroup: comp.lang.c

    On 26/10/2026 15:48, fir wrote:
    bartc pisze:
    On 26/10/2026 14:15, fir wrote:
    bartc pisze:
    On 26/10/2026 12:51, fir wrote:
    bartc pisze:

    Can you not see that taking AI's capabilities to the extremes
    makes it all pointless? At least, for recreational purposes.

    Its other main purpose seems to be taking over as many people's
    jobs as possible.

    overally people have absolutely crazy opinions here..its liek
    someone gave you milion dollars and you will be screaming "its bad"

    Actually yes. What would happen if /everybody/ was given a million
    dollars? Think about it.


    this is a million dolars ov value not empty paper money, ai gives
    such value that 1 milion per capita is imo quite comparable


    Well, $1m wouldn't have quite as much value if every individual on
    earth was a millionaire.

    But the first thing that would happen is that most people would not
    bother going to work (because they're now rich!) and everything would
    stop working.

    Likely followed by hyperinflation.

    Actually, if you type in: "suppose everybody everybody was given
    $1000000" into google, your beloved AI gives the same sort of picture.

    Namely (it goes into a lot more detail):

       Instant Hyperinflation
       Supply Chain and Labour Collapse
       Destruction of Savings and Debt

    Of course, if it was just me, I'd take it! And if I was the only
    person on earth with access to AI, that would also be invaluable.


    sadly you say nonsense here ...first some complain of losing jobs then switchung to state where there are jobs and people not take it..

    also this is no case of hiperinflation

    That is literally what Google's AI reported.

    is more liek oposite when work is
    much cheeper things go cheaper

    If AI is available to everybody, and it can do anything, then why would
    they need you, or your product?

    Unless your product is AI.

    so many people dont get basics and talk crazy things

    Yeah...
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From gazelle@[email protected] (Kenny McCormack) to comp.lang.c on Mon Oct 26 17:47:26 2026
    From Newsgroup: comp.lang.c

    In article <11bnvi2$oo6k$[email protected]>, "fir" wrote:
    ...
    so many people dont get basics and talk crazy things

    This is rich, coming from "fir"...
    --
    The randomly chosen signature file that would have appeared here is more than 4-ish
    lines long. As such, it violates one or more Usenet RFCs. In order to remain in compliance with said RFCs, the actual sig can be found at the following URL:
    http://user.xmission.com/~gazelle/Sigs/RepInsults
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@[email protected] to comp.lang.c on Mon Oct 26 12:38:48 2026
    From Newsgroup: comp.lang.c

    On 10/26/2026 4:27 AM, fir wrote:
    Chris M. Thomasson pisze:
    On 10/25/2026 5:32 PM, fir wrote:
    Chris M. Thomasson pisze:
    On 10/25/2026 11:04 AM, fir wrote:
    fir pisze:
    bartc pisze:
    On 25/10/2026 11:01, fir wrote:
    ichard Harnden pisze:> On 23/10/2026 06:44, fir wrote:
    when thinkong on variadic functions not much come to mind but >>>>>>>>  >> only recently i noticed min or max would be good for variadic >>>>>>>>  >>
    the ai wrote me such variadic min
    ;
    I don't think that I'd bother with stdarg at all.
    ;
    Just use a string of ints ...
    ;
    int min(const int *n)
    {
    ;      int m = INT_MAX;
    ;
    ;      while ( *n )
    ;      {
    ;          if ( *n < m ) m = *n;
    ;
    ;          n++;
    ;      }
    ;
    ;      return m;
    }
    ;
    int a=Min(4,10,3,7,-2);  // -2
    ;
    int a = min((int[]){10,3,7,-2}));
    ;
    ;
    ;
    such thig should be builtin nd automatic there are hovever some >>>>>>>> decisions toconclude for example

    foo(float3 x);
    goo(float3* x);

    foo({1,2,4.});

    goo({2,3,4}) or  goo(&{2,3,4})

    or maybe allowing to drop {} at all
    foo(1,2,4.);

    So:

        foo(float3 x, float3 y, int n);

    can be called as:

        foo(1, 2, 3, 4, 5, 6, 7);


    well its a question what to put as a mandatory.. i dont know yet, >>>>>> but for sure thise automatic 'fitting' would be somewhat good

    some can write

    foo({1, 2, 3}, {4, 5, 6}, 7);

    and you again present anti-c philosophy

    c allows you write programs ale obfuscated c contests..in your
    philosofy
    you would forbide it all? forcing codes not have syttaktic shortcuts? >>>>>>
    i totally not agree to such philosophy

    (though its not always clear whay s good shortcut/hack c way and
    what is not)



    It's so easy to see where one argument ends and another begins! >>>>>>> And this is the simplest possible set of arguments.

    Still, C has prior art here:

        typedef struct {float x,y,z;} float3;
        typedef struct {float3 a, b; int c;} T;

        T x = {1, 2, 3, 4, 5, 6, 7};

    So that would fit right in!



    recent state of my rasterizer toying btw

    https://www.youtube.com/watch?v=xERLKVTV9s8

    those pices of geometry was generated by ai ...sadly when adding
    more geometry the rasterizer get slowing down ofs..and i have no
    best cpu

    Too bad you need an AI to make it for you.



    you talk like medevial peasnt such your remarks here

    you know for some people accustomed to higher social standards you
    may be perceive you as a bit of a country bumpkin (sorry i dont
    understand this phrase its form translation, i m not quite sure what
    bumpkin is - i meant more like peasent, medevial villager)

    its not quite good to enforce you peasnty belifs on
    people...especially as it seems you totally dont know what youre
    talkin about

    i already told you so but it seems youre like dont get it


    as to rasterizer its nice to shape the pixell matter..though i need much >>> stronger cpu, i need like 100x stronger..and it doesnt seem i would
    get it..though GPU in fact maybe might be so

    or meybe i should learn more multithreading and put it on 8 10 or 12
    cores... im not sure but not being experienced in this it seems that
    rasterisation should be quite good for multithreading - simply run 1/10
    of objects in the scene on 10 cores into 10 output buffers..then "add"
    the buffers... this depth buffers seem ideal for adding

    im not yet sure if it really works that way - but if it does its
    finally a reason to buy a desktop pc iwth many cores




    though modern are maybe 2-3 times faster at most i guess



    Not really, just buy something with a half way decent GPU, or even a
    crappy one. NVIDIA has some cheap ones. The learn how to code for it.

    there is no chea nvidia GPU at stores right now.. i maybe should stil
    wait if they get nootably cheaper and buy some

    more important gpu koding is different kind of coding... this rasterizer
    btw i coded in formal C now (as ported from old version c via c++)
    though those linker errors when i
     i call i function name which i it cant find annoys me i could say
    (in c via c++ thre eas no such thing as i remember)

    Well, actually, building it from scratch is a kinda similar type of
    coding. Its as if we are simulating a GPU. We can build all of the
    vertex, geometry, compute, frag shaders all in C. Create the pipeline, etc.


    as to AI it so much grat i could probably name a list of 100
    (or at least 30) big advantages of it where 2-3 could be suffice to use it

    Well, the AI kinds of means nobody has to buy books anymore?


    you noticed i criticize your 'peasenty' attitude but really learn what
    you talkin about becouse stating things when you got no idea what youre talkin about is absolutely not usenet is for

    usenet was always good people here focus on validating opinions and
    what you say   like that: i have no idea what im talking about yet i
    will say opposite to truth is not standable  here

    take given point you learned if something is wrong in that point
    criticize it in valid ay if you must ... or praise it if its good
    becouse this seconnd attempt is arso quite valueable i such new topic
    when people need to learn that


    Actually, I remember an old site that had info on making everything in
    C. No GPU at all. Cannot seem to find it now, it was many moons ago.
    Sigh. Have you looked at the old DOOM source code?

    I know how to do it, but its just too slow once you try to do some fancy things...
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@[email protected] to comp.lang.c on Mon Oct 26 12:41:40 2026
    From Newsgroup: comp.lang.c

    On 10/26/2026 4:30 AM, fir wrote:
    [...]

    Well, have you ever told an AI to not show you any code and/or full
    solutions, but act like a "book" that tries to take you through lessons?

    Actually, allow you to try to solve a lesson by yourself _before_ you
    move on to the next one?
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@[email protected] to comp.lang.c on Mon Oct 26 12:43:16 2026
    From Newsgroup: comp.lang.c

    On 10/26/2026 9:33 AM, fir wrote:
    Lawrence D’Oliveiro pisze:
    On Sun, 25 Oct 2026 15:58:58 -0700, Chris M. Thomasson wrote:

    On 10/25/2026 2:56 PM, Lawrence D’Oliveiro wrote:

    On Sun, 25 Oct 2026 14:44:15 -0700, Chris M. Thomasson wrote:

    If you want some free models to work with. check out SketchFab.

    Aren’t they more oriented towards 3D printing?

    Well, fir should know how to load a 3d model and light it.

    There are better sources of models for on-screen work.

    Sci-fi fan? How about this <https://trekmeshes.eu/>.

    those are prioprietary more or less

    ai generates quite nice models imo

    https://www.youtube.com/watch?v=PeTMNf4Z8q4

    and whats great there are like i get the legal rights to them
    at least in such extnt i can uise them - which is great

    becouse even if tehre are free models in the net i dont like the
    dependencies of such type

    and here is liek i get rights to this stations and ships

    possibly not agressive that someone can generate the same or close and
    he has also rights to thuis and its also very good as i dont like
    agresive copyrights

    but startrek is ok and i could eventually even download and load thse
    models just tos see how it look

    Getting your engine to load up other peoples models correctly is not
    exactly "easy". Some of the models even have their own shaders. Then you
    need to learn about the bones, and how to animate them.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@[email protected] to comp.lang.c on Mon Oct 26 12:47:07 2026
    From Newsgroup: comp.lang.c

    On 10/26/2026 5:51 AM, fir wrote:
    [...]

    Hove you ever read the Tommyknockers by Stephen King?

    The damn aliens started to give the people of Haven the knowledge on how
    to build very interesting things. But, the people did not know anything
    about the underlying processes. They just blindly build them. But did
    not know how they worked at all, or the tech and reasoning behind it.

    So building a 3d renderer from pure scratch can be a good thing. Just
    try to refrain from the AI doing all the work for you. damn.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@[email protected] to comp.lang.c on Mon Oct 26 12:48:16 2026
    From Newsgroup: comp.lang.c

    On 10/26/2026 10:47 AM, Kenny McCormack wrote:
    In article <11bnvi2$oo6k$[email protected]>, "fir" wrote:
    ...
    so many people dont get basics and talk crazy things

    This is rich, coming from "fir"...


    Yikes!
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Richard Harnden@[email protected] to comp.lang.c on Mon Oct 26 20:05:04 2026
    From Newsgroup: comp.lang.c

    On 26/10/2026 19:48, Chris M. Thomasson wrote:
    On 10/26/2026 10:47 AM, Kenny McCormack wrote:
    In article <11bnvi2$oo6k$[email protected]>, "fir" wrote:
    ...
    so many people dont get basics and talk crazy things

    This is rich, coming from "fir"...


    Yikes!

    ITYM: Yeiks :)

    --- Synchronet 3.22a-Linux NewsLink 1.2