{"id":23832024,"url":"https://github.com/csdms/cca-babel","last_synced_at":"2025-02-22T03:14:47.577Z","repository":{"id":145027517,"uuid":"47283654","full_name":"csdms/cca-babel","owner":"csdms","description":"Mirror of the CCA babel tool","archived":false,"fork":false,"pushed_at":"2018-10-09T21:14:28.000Z","size":17914,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-01-02T14:16:51.633Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/csdms.png","metadata":{"files":{"readme":"README","changelog":"CHANGES","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2015-12-02T19:34:07.000Z","updated_at":"2017-03-16T18:29:07.000Z","dependencies_parsed_at":"2023-09-30T10:33:58.624Z","dependency_job_id":null,"html_url":"https://github.com/csdms/cca-babel","commit_stats":{"total_commits":5,"total_committers":2,"mean_commits":2.5,"dds":"0.19999999999999996","last_synced_commit":"b7c7370ce85f03578f305cff9bbb8438df0dbc31"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csdms%2Fcca-babel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csdms%2Fcca-babel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csdms%2Fcca-babel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csdms%2Fcca-babel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/csdms","download_url":"https://codeload.github.com/csdms/cca-babel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240118427,"owners_count":19750491,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-02T14:17:01.292Z","updated_at":"2025-02-22T03:14:47.554Z","avatar_url":"https://github.com/csdms.png","language":"C","readme":"\n                     BABEL 1.4.0 README\n\n               ****  Released 20 October 2008 ****\n\n\nContents\n========\n\n  Introduction\n  Contact Information\n  Overview for the Impatient\n  Running Tests\n  Supported Platforms\n  Directories\n  Features\n  Outstanding Issues\n  Future Work\n  Further Information\n  Project Team\n\n\nIntroduction\n============\n\n  Babel is a language interoperability tool intended for use by\nthe high-performance scientific computing community.  Developed\nby the Components project (http://www.llnl.gov/CASC/components)\nat Lawrence Livermore National Laboratory, Babel supports the\nScientific Interface Definition Language (SIDL) for the language-\nindependent declaration of interfaces associated with scientific\nsoftware packages.\n\n  The Babel tool, applied to a SIDL file, results in the automatic\ngeneration of the associated skeleton and stub source files.  The\nBabel user then need only add the necessary code to the _Impl source\nfiles to complete the provision of a language-independent interface\nto the package described by the SIDL file.  The languages currently\nsupported by Babel are C, C++, F77, F90, Java and Python.  \n\n  The remainder of this document provides basic information about\nBabel including features, outstanding issues, and future work.\n\n\nContact Information\n===================\n\n  If you have any questions or concerns with the installation \nprocess or usage of Babel, feel free to contact the project team \nat components@llnl.gov.  To report bugs or suggest feature \nenhancements, please submit a report in the bug database at \nhttps://www.cca-forum.org/bugs/babel/ or send email to\nbabel-bugs@cca-forum.org.\n\n\nOverview for the Impatient\n==========================\n\n  Once you have completed the installation process (see the INSTALL \nfile in this directory), you are ready to proceed with using Babel.  \nA complete tutorial that steps you through the process of building \nthe ubiquitious \"Hello World!\" example for a single client and server \nis available at ./doc/manuals/users_guide/html/users_guide.html\n\n  Briefly, now that you have the Babel compiler available, you'll \nneed to have a sidl file defined before running the compiler.  \nBelow is a skeleton of the command line required to build the stubs, \nskeletons, Makefile fragment, and GNUmakefile.\n\n    $ ./\u003cbabel\u003e/bin/babel --makefile -s\u003clang\u003e \u003cname\u003e.sidl\n\n      where \u003clang\u003e is the desired language,\n            \u003cname\u003e is the name of the SIDL file, and\n            \u003cbabel\u003e is the installation's top directory\n\n  Now you'll need to add the appropriate code within the splicer \npairs in the _Impl files.  Once you've finished filling in the \nimplementation details, you can simply compile and link the \nappropriate libraries.  Again, refer to the tutorial for more\ninformation.\n\n\nRunning Tests\n=============\n\n  If you are interested in running the regression tests that\nare packaged in this distribution you will need to build them\nsince they are excluded from the basic installation process.\nAs in the example in the INSTALL file, given that the Babel \ndistribution is in $HOME/babel, the process for building and \nrunning the regression tests is as follows:\n\n    $ cd $HOME/babel\n    $ make check\n\nVarious diagnostics and results (e.g., PASS, XFAIL) will be\ndisplayed to indicate the number and status of each set of\ntests.  At this time, there are three sets of tests each with\nthree instances (9 total) that are expected to fail (i.e., XFAIL)\nThese are for arrays in Python, arrays in Java, and exceptions in\nJava.\n\n\nSupported Platforms\n===================\n\n  The Babel compiler has been successfully run on the platform/\ncompiler pairs listed below.\n\n    Linux             / Intel Compiler Suite 8.0 (icc, ifc \u0026 g77)\n    Linux             / GCC \u0026 Absoft F90\n    Linux             / GCC \u0026 Lahey F90\n    Linux             / GCC 4.0 \u0026 gfortran\n\n    AIX               / GCC\n    AIX               / IBM compiler suite\n\n\n    Sparc-Solaris2.9  / gcc 3.1 or higher (use SHELL=/bin/ksh )\n    Sparc-Solaris2.9  / g77 3.1 or higher (use SHELL=/bin/ksh )\n    Sparc-Solaris2.9  / f77 (Sun WorkShop 5.0)  (use SHELL=/bin/ksh )\n    Sparc-Solaris2.9  / f95 (SUNSWspro) (use SHELL=/bin/ksh )\n\n\nDirectories\n===========\n\n  The following represents the source directory tree \nassociated with this release, relative to the top\nlevel of the installation directory, and a brief\ndescription of the contents of each:\n\n    bin/                    # The Babel compiler\n    compiler/               # The compiler source\n    doc/                    # Supplemental documentation\n    doc/manuals/users_guide # PS, PDF, and HTML documentation\n    examples/               # Simple examples:\n    examples/hello/         #   Hello World examples\n    examples/cca            #   CCA-0.5 framework implementation\n    lib/                    # Supporting libraries\n    regression/             # Regression tests:\n    regression/args/        #   Data Type+Passing Mode \n    regression/arrays/      #   Arrays\n    regression/contracts/   #   Contracts (i.e., interface assertions)\n    regression/enums/       #   Enumerations\n    regression/exceptions/  #   Exceptions \n    regression/hooks/       #   Pre- and post-method hooks\n    regression/inherit/     #   Inheritance \n    regression/objarg/      #   Passing objects as arguments\n    regression/ordering/    #   Array ordering test\n    regression/overload/    #   Function name overloading\n    regression/sort/        #   Abstract class and interface args\n    regression/strings/     #   Strings\n    runtime/                # Runtime support files \n                              (e.g., sidl.sidl)\n    share/                  # Shared config files\n\n\nFeatures\n========\n\n  Key features, or capabilities, of the Babel toolkit \nare described in this section. \n\no SIDL Data Types\n  SIDL defines the following data types:\n    arrays      double        interface\n    bool        enum          long\n    char        fcomplex      opaque\n    class       float         string\n    dcomplex    int\n\n  All data types are currently supported in C, C++, F77, F90,\n  and Python with the additional exception of long in\n  Python.  It is important, however, to note that the\n  binding for enum in F77 and F90 is currently INTEGER due to\n  Babel's dependence upon C for its internal object\n  representation (IOR).\n\n  Refer to ./regression/args for clients and/or servers in \n  C, C++, F77, F90, Python, and Java that exploit most data types.  \n  Use of arrays can be found in ./regression/arrays (including \n  in Python), enums in ./regression/enums, and strings \n  in ./regression/strings.  A crash course in SIDL\n  arrays can be found in the users guide.\n\no SIDL Data Passing Modes\n  The following data passing modes are defined:\n\n    in      inout      out      return\n\n  Note that return values in F77 and F90 are translated to out \n  arguments.  Refer to ./regression/args for clients and \n  servers in C, C++, F77, and F90 that exploit these modes.\n\no SIDL Exceptions\n  SIDL provides support for exceptions.  Clients are, \n  however, required to check the return values.  A set \n  of macros are defined in ./runtime/sidl/SIDL_Exception.h \n  to facilitate throwing and catching exceptions in C.  \n  Refer to ./regression/exceptions for C, C++, F77, F90, and \n  Python servers and C, C++, F77, F90, Java, and Python clients.\n\no SIDL Inheritance\n  SIDL supports Java-like inheritance.  Refer to \n  ./regression/inherit for servers in C, C++, F77, and F90 \n  and clients in C, C++, F77, F90, Java, and Python that exploit \n  these features.\n\no SIDL Method Overloading\n  SIDL supports method overloading on the client and server \n  side for object-oriented languages using an exact match of\n  the arguments.  Languages that support method overloading \n  make use of the method name from the SIDL file; whereas, \n  those that do not support overloading rely on the optional \n  method name extension to build unique method names.  Refer \n  to ./regression/overload for examples of the specification \n  and use of overloaded methods in C, C++, F77, and F90 servers and \n  C, C++, F77, F90, Java, and Python clients that exploit these \n  features.\n\no Makefile Generation\n  Babel generates a lot of code.  To assist the developer\n  in managing the code, Babel will generate fragments of\n  makefiles.  These files are called \"babel.make\" and \n  define standard macros that list all the relevant source \n  code generated in that directory.  \n\no Code Splicing\n  Although Babel generates a lot of code, some code (notably)\n  \"impl\" files, require hand editing to produce useful \n  libraries.  Babel preserves your previous edits in certain\n  files.  This is done with some special CodeSplicer directives \n  embedded in comments in the generated code.  All code \n  nested between matching CodeSplicer directives will be\n  preserved by the Babel compiler.\n\no Direct Access to Numerics in Fortran 77\n  \"Pointers\" are provided for direct access to numeric \n  data types (i.e., dcomplex, double, fcomplex, float, \n  int, and long).  There is a potential for an alignment\n  problem with arrays of dcomplex and double, in\n  particular, so check the return value of the pointer\n  before using it.\n\no Array Element Access in Fortran 77 and Fortran 90\n  Array elements are accessible via subroutine calls.  For\n  more information, see the users manual.\n\no Strings in Fortran 77\n  When implementing a method with an inout or out \n  string, the size of the outgoing string is at least \n  512 characters long.\n\no Enums in Fortran 77 and Fortran 90\n  Due to Babel's dependence upon C for its internal object\n  representation, the binding for an enumerated type is\n  INTEGER.  The good news is that if your Fortran and C compilers\n  use the same word size for C int and Fortran INTEGER, everything\n  should work fine.  However, if the sizes are different, then\n  you may have problems with using enums.\n\n\nOutstanding Issues\n==================\n\n  There are several aspects of the distribution that still \nneed work.  The outstanding issues that need to be addressed\ninclude features as well as documentation.\n\no Python 'long' Data Type\n  Arrays of long are treated as arrays of int32_t in Python.\n  Outside of arrays, SIDL long is mapped to Python's indefinite\n  precision integer data type.\n\no Support for Multiple Fortran XX Compilers\n  In order to use SIDL with multiple Fortran compilers, there\n  currently must be a separate Babel installation for each \n  compiler.  You will also need different versions of the \n  runtime library.\n\no Build Processing\n  A mechanism for simplifying the build process needs to be \n  explored, especially to facilitate user builds.\n\no C++ Shared Libraries and libtool\n  In general, the creation of shared libraries in C++ seems to\n  be problematic.  It was necessary to make compiler-specific\n  modifications to libtool.  Consequently, this distribution\n  includes our modified libtool.\n\n\nFuture Work\n===========\n\n  The following is a list of key activities that will be \nexplored for incorporation into subsequent releases:\n\no Test for arrays of enums (still more work could be done here)\no Expanded platform and compiler support\no Simplified Build processing \no Data Redistribution\no Expanded interface contract specification and enforcement capabilities\n\n\nFurther Information\n===================\n\n  The following files are available at the top of the \nrelease directory structure provide additional information \non the Babel release:\n\n    BUGS       Lists known bugs\n    COPYRIGHT  Lawrence Livermore National Security, LLC notice\n    INSTALL    Provides installation instructions\n    README     This file\n\n  Additional background information can be found in the \n./doc/papers and ./doc/talks subdirectories including the \noutdated specification (./doc/papers/specification.ps).  \nMore recent papers and talks can be found at our web site\nat \n\n    http://www.llnl.gov/CASC/components/\n\n  Additional documentation including a tutorial, command\nline arguments, SIDL grammar, and crash courses on SIDL \narrays and Fortran can be found in ./doc/babel101.\n\n\nProject Team\n============\n\nThe following individuals are current members of the\ndevelopment team on the LLNL Components Project:\n\n  Tammy Dahlgren              Tom Epperly                 \n  Gary Kumfert                Jim Leek\n\nCommunity code contributors:\n  Boyana Norris               Ben Allan\n\nOur alpha testers are:\n  Bill Bosl                   Jeff Painter\n  Andy Cleary                 Steve Smith\n\nand our alumni are:\n  Melvina Blackgoat           Nathan Dykman\n  Kevin Durrenberger          Scott Kohn\n  Brent Smolinski             Sarah Knoop\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcsdms%2Fcca-babel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcsdms%2Fcca-babel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcsdms%2Fcca-babel/lists"}