chicken-hackers email added by arthurmaciel on Sun Jul 6 21:41:47 2014

Probably all my doubts are due to my ignorance about C and computer internals, but I would love to understand more the chicken.h file.
(http://code.call-cc.org/cgi-bin/gitweb.cgi?p=chicken-core.git;a=blob;f=chicken.h;h=f5a103ee14314f7c679e01dd8e11c0404043791a;hb=HEAD)

I feel really ashamed to ask this, but as I want to contribute more to Chicken, it would help me a lot to know about these details:
- Lines 777 to 838: I suppose the code is used for CPS, but I'm not sure about it and I can't figure out why it is that way and how it is used in practice.
- Lines 876 to 909: although this excerpt starts with a comment about Clang and G++ limitations on statement expressions, all the hackery is only implemented when DEBUGBUILD is defined. I don't understand why. I also can't understand the code from 892 to 909, but I suppose I need more C knowledge to that.
- Throughout the whole file I can't guess what is the meaning of some letters that prefix function names, like:
  - C_c_pointer(x): "_c_" refers to C, so it is just a "C pointer", right?
  - C_c_pointer_nn(x): what does "nn" stand for?
  - C_truep(x): I suppose the "p" stands for "predicate" as in Common Lisp, right?
  - C_fixnum_plus(n1, n2) vs. C_u_fixnum_plus(n1, n2): the "_u_" on the second means "unsigned"?
  - C_ub_i_flonum_plus(x, y):  what about "_ub_", "unsigned byte"?
  - C_a_i_flonum_plus(ptr, c, n1, n2): what about "_a_" and "_i_"?
  - C_mpointer: the "m" stands for "memory"?
  - C_mk_bool: "mk" stand for "make"?

Thanks for help and sorry about the ignorance!