From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7326 invoked by alias); 5 Oct 2009 23:04:12 -0000 Received: (qmail 7316 invoked by uid 22791); 5 Oct 2009 23:04:11 -0000 X-SWARE-Spam-Status: No, hits=-10.0 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,SPF_PASS X-Spam-Check-By: sourceware.org Received: from proofpoint1.lanl.gov (HELO proofpoint1.lanl.gov) (204.121.3.25) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 05 Oct 2009 23:04:08 +0000 Received: from mailrelay1.lanl.gov (mailrelay1.lanl.gov [128.165.4.101]) by proofpoint1.lanl.gov (8.14.3/8.14.3) with ESMTP id n95N46bU004512 for ; Mon, 5 Oct 2009 17:04:06 -0600 Received: from alvie-mail.lanl.gov (alvie-mail.lanl.gov [128.165.4.110]) by mailrelay1.lanl.gov (Postfix) with ESMTP id 1F163165D95 for ; Mon, 5 Oct 2009 17:04:06 -0600 (MDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by alvie-mail.lanl.gov (Postfix) with ESMTP id 1DAD67D00A7 for ; Mon, 5 Oct 2009 17:04:06 -0600 (MDT) X-NIE-2-Virus-Scanner: amavisd-new at alvie-mail.lanl.gov Received: from [130.55.124.157] (manticore.lanl.gov [130.55.124.157]) by alvie-mail.lanl.gov (Postfix) with ESMTP id 0EE577D00A5 for ; Mon, 5 Oct 2009 17:04:06 -0600 (MDT) Subject: some general questions From: Gerard Jungman To: gsl-discuss@sourceware.org In-Reply-To: <7f1eaee30910050750l738876b1p41e6bd8ae5aa6d16@mail.gmail.com> References: <1254708349.18519.4.camel@ForbiddenPlanet> <7f1eaee30910050750l738876b1p41e6bd8ae5aa6d16@mail.gmail.com> Content-Type: text/plain Date: Mon, 05 Oct 2009 23:04:00 -0000 Message-Id: <1254783975.28192.103.camel@manticore.lanl.gov> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit X-Proofpoint-Virus-Version: vendor=fsecure engine=1.12.8161:2.4.5,1.2.40,4.0.166 definitions=2009-10-06_01:2009-09-29,2009-10-05,2009-10-05 signatures=0 Mailing-List: contact gsl-discuss-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gsl-discuss-owner@sourceware.org X-SW-Source: 2009-q4/txt/msg00004.txt.bz2 Mainly directed at Brian... ** Random questions which touch on GSL as a whole. Q1. Regarding header files: Why are the struct declarations inside __BEGIN__DECLS / __END_DECLS pairs? I think they could be outside. I have in mind some ideas for better interaction with C++, which we can discuss later. In any case, if they can go outside (and I'm pretty sure they can), then they should. There's nothing "extern C" about a struct declaration. POD is POD. Language lawyers should correct me if I'm wrong. But I don't think it has anything to do with languages, so much as the assumptions of binary compatibility inherent in linking across the C / C++ barrier. Q2. How is the global variable gsl_check_range supposed to work? It doesn't seem to be used in any way. Is it just cruft? Q3. Why do we still have the 'const' qualifiers on by-value parameters in some header files? I remember it had something to do with the behaviour of a brain-damaged compiler (microsoft?) ten years ago. But that was ten years ago. Let's clean that up. What does the standard say? Q4. Why are the dependencies for including "source" files in the templatized world broken? Updating a "templatized" source file does not force a recompile; obviously it should. Q5. Can we extend the "templatizing" scheme to generate declarations too? Of course, if it obscures the header files, then it is not acceptable. Q6. More a statement than a question: We should be more explicit about the levelization of the design. This means expressing the dependence of components clearly. For example, matrix depends on vector, yet there is nothing in the build or in the structure of the library which makes this clear. Everything depends on error handling. Some things depend on ieee. Some things are almost standing alone. We currently have no meaningful notion of sub-libraries or component dependency. Simple observations, for people who don't get it: * There are too many "things" in the root directory, both files and directories. * There are loose header files in the root directory. Their role cannot be drawn from context when they are floating in the open sea. * There are actual source files (gsl-histogram.c, gsl-randist.c, version.c) in the root directory. Blechhh. Let's clean house.