{"id":13783081,"url":"https://github.com/0branch/regina","last_synced_at":"2026-01-20T02:08:10.232Z","repository":{"id":145534765,"uuid":"131006035","full_name":"0branch/regina","owner":"0branch","description":"The Regina Rexx interpreter. Mirror of https://svn.code.sf.net/p/regina-rexx/code (git svn clone).","archived":false,"fork":false,"pushed_at":"2022-09-28T02:30:31.000Z","size":2920,"stargazers_count":6,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-17T18:32:29.540Z","etag":null,"topics":["rexx"],"latest_commit_sha":null,"homepage":"https://regina-rexx.sourceforge.io","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/0branch.png","metadata":{"files":{"readme":"README.07a","changelog":null,"contributing":null,"funding":null,"license":"COPYING-LIB","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-04-25T12:53:22.000Z","updated_at":"2023-02-22T10:05:42.000Z","dependencies_parsed_at":"2024-01-07T23:09:55.656Z","dependency_job_id":"586d01f0-b342-4c3d-a976-0674d6d764bb","html_url":"https://github.com/0branch/regina","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0branch%2Fregina","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0branch%2Fregina/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0branch%2Fregina/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0branch%2Fregina/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0branch","download_url":"https://codeload.github.com/0branch/regina/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253604466,"owners_count":21934865,"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":["rexx"],"created_at":"2024-08-03T18:01:52.595Z","updated_at":"2026-01-20T02:08:10.189Z","avatar_url":"https://github.com/0branch.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"Welcome to version 0.07a of the Regina Rexx interpreter.\n\nBut first, the copyright and copying conditions. The code is\n'copylefted', which means that it is copyrighted, but that you are\nallowed to use, copy, modify, redistribute and sell the code, under\nthe conditions listed in the \"GNU Library General Public License\". See\nthe file COPYING-LIB for more information.\n\nNote that this has changed since version 0.06, which was covered by\nthe 'ordinary' GPL. The reason for the change is simply that Regina is\nbecoming more and more library-like, and the LGPL seemed more\nappropriate than the GPL.\n\nThe source has been built and tested on several platforms. Generally,\n'all' you need a Standard C compiler (i.e. ANSI C), a 'lex' program\nand a 'yacc' program. In addition, your machine should be POSIX\ncompliant. The latest version of Regina is stored on the anonymous ftp\nsite ftp.pvv.unit.no (129.241.36.200), in the '/pub/regina' directory.\n\nTo build the interpreter:\n\n1) Edit the Makefiles (in particular the one in the 'src' subdirectory,\n   and uncomment a suitable definition of the macros CC and CEXTRA.\n   You may want to make a new one if none of the existing ones fit\n   your exact needs.\n\n2) Run the command   make\n\n   If you like to make the dynamic library curses.rxlib, then you must\n   issue the command  make curses.rxlib  while in the src subdirectory.\n   Note that dynamic loading of libraries will not work on all systems.\n\n3) The Makefile does not install targets. There is a make-target\n   'install', which installs programs. Check the settings of macros in\n   the makefile before running make for target 'install'.\n\n4) You might want to run the documentation through the LaTeX\n   textformatter.  If you don't have the 'block' and 'a4' style\n   options for tex (these are not standard LaTeX options), just\n   edit them out, letting the first line become:\n\n      \\documentstyle{report}\n\n   Preformatted version of the documentation is supposed to be\n   available from flipper in the directory 'pub/rexx/doc', there is\n   one file which contains the whole documentation as a PostScript\n   document. In addition, there is a set of ASCII files, which is the\n   preformatted version, divided by chapters.\n\nThere are sometimes problems when compiling Regina under SunOS. The\nmain problem is that SunOS is one of few Unix systems still in use which\nis neither POSIX nor ANSI. Note that Solaris is OK. But SunOS 4.1.1 has\nthe following problems:\n\n * Lacks the memmove() function; use bcopy() instead\n * Lacks the strerror() function; access sys_errlist[] directrly for\n   circumvent this.\n\nThere are several other omisions and bugs in the include file of SunOS,\nbut the rest of them are likely to 'just' generate warnings. The two\nabove, however, _must_ be fixed if compilation shall succeed. If the\npreprocessor symbol SunKludges is defined, these two problems are\nautomatically fixed in config.h; however, that fix may not suit all\nsituations.\n\nIn general, this depends on the interpreter you are using. Some\nversions of gcc (at least 2.5.2) will declare strerror() and\nmemmove(); thus an error is provoked if compiled with SunKludges.\nAlso, there are some other problems, like the SEEK_{SET,END,CUR}\nmacros not being defined.\n\nAlso, SunOS has a bug, the _file member of FILE has type char, but\nfileno() should return an integer or -1 if error. However, if your\nmax-number-of-files limit exceeds 128, fileno() will return -128 as\nfile descriptor. Obviously, this is incorrect, and obviously, this can\nnot be fixed by casting fileno() to unsigned char (it would be\nincompatible and then -1 and 255 would overlap). You should (a)\ncomplain about this to your SunOS vendor, and (b) never set the max\nopen files limit higher than 128. I've tried to circumvent it by\ncasting the return value from fileno to unsigned char. But it doesn't\nseem to work, probably because other I/O functions use _file without\ntaking any precautions. Thus, you should never use max open files\ngreater than 128 under SunOS; else, bad things will happen, both in\nRegina and in other programs. (Use limit or ulimit to display/set\nthis max limit.)\n\nIf you want to compile it for VMS, you need a lex and a yacc program.\nYou can get the GNU versions of these tools, or you can run the lex\nand yacc on another machine, and copy the results of these programs\nfrom that machine. Unfortunately, I've not been able to test the VMS\nversion for some time now, so it might need some 'help' to compile\ncorrectly.\n\nI have built it on the following platforms:\n\n   - gcc, lex and yacc on a Uniline 88\n   - gcc, lex and yacc on Sun 3\n   - c89 (unbundled), lex and yacc on Decstation 5000, under Ultrix 4.2\n   - cc, lex and yacc on Irix Indigo and Onyx, under IRIX 4 and 5\n   - acc (unbundled), lex and yacc on Sun Sparc, under Sunos 4.2\n   - cc, lex and yacc on Decstation 3100, under OSF/1\n   - c89, lex and yacc on HP 9000, under HP/UX 8.05\n   - cc, lex and yacc on IBM RS6000 under AIX\n   - cc, lex and yacc on Cray under UNICOS\n   - cc, lex and yacc on Linux 0.99\n   - cc on a VAX/VMS, getting yacc and lex output from a Sun.\n   - cc, lex and yacc on a DEC alpha running OSF/1\n\nRead the file README.VMS to get more information about how to build\nRegina on a computer running VMS, and what functionality is present in\nthe VMS version of Regina. In addition to VMS and Unix, this version\nof Regina has also been successfully built for OS/2 and MS-DOS, using\nthe EMX development environment under OS/2. However, Regina does not\nyet have any specific support for these systems.\n\nThis version of Regina also has support for dynamic loading of object\nfiles. I.e. that you can load an object module containing definitions\nfor extra 'built-in' functions. This interface uses the same interface\nas the RXFUNCADD(), RXFUNCDROP() and RXFUNCQUERY() functions in SAA\nRexx. Only one library of extra functions are available, it is a\ncurses interface library (although not all curses functions are\nimplemented in it yet.) To load these function into the interpreter,\nuse:\n\n   lib = './curses.rxlib'\n   if rxfuncadd('CURSES', '/path/curses.rxlib', 'curses')  then do\n      say 'An error occured when trying to load the library: \"'lib'\"'\n      say 'The error message returned was: \"'rxfuncerrmsg()'\"'\n      say 'Exiting...'\n      exit\n      end\n   else\n      call curses('CUR_')\n\nActually, this 'just' loads and executes a function CURSES() in the\nlibrary. However, this special function will load all the other\nfunctions in the library. The parameter given to CURSES() is the\nprefix to prepend on all function names. See the file hanoi.rexx in\nthe code directory for an example.\n\nNote that dynamic linking is only supported for those. Also note the\nthe normal 'make' setup will not by default compile the curses\nlibrary. To do that, do:\n\n   make curses.rxlib\n\nafter having made the rest of Regina.\n\nIf you are unable to get Regina to work on your computer, because you\ndon't have one or several of the programs needed to build it, you can\ntry to build the GNU tools on your computer. Regina will compile with\nthese tools (and using them is a good idea anyway). You can get them\nby anonymous ftp from prep.ai.mit.edu, ugle.unit.no and several other\nplaces.\n\nThe areas where it is not POSIX compliant are:\n\n   - It uses \"struct timeval\" and gettimeofday().  You can control\n     this through the HAS_TIMEVAL option in config.h.  Comment it out\n     if your machine does not eat the code.  Consequences: The\n     interpreter will have a time granularity of 1 second.\n\n   - It uses ftruncate().  If you do not have that, comment out the\n     HAS_FTRUNCATE option on config.h.  Consequences: When writing to\n     the middle of a file with lineout(), the file will not be\n     truncated after the line written.\n\n   - It uses putenv() to set an environment variable. While POSIX do\n     have the getenv() call, it does not have a way of setting\n     environment variables. Fortunately, most machines have a way of\n     doing this, but you might have to link in an extra library or\n     something. If you can't find a putenv() on your machine, you can\n     undefine the HAS_PUTENV macro in config.h.  Consequences: Trying\n     to set en environment variable will cause a syntax error\n\nThe interpreter has bugs and missing feature. I consider this release\nof Regina a beta release, and I will continue to do so, until:\n\n   - Regina is a full implementation of Rexx as described in the book:\n     \"The Rexx Language\", by Mike Cowlishaw;\n\n   - the most important extensions from CMS have been implemented;\n\n   - a full implementation of the Rexx SAA API, as documented for\n     OS/2, has been implemented;\n\n   - all important extensions suggested by the ANSI Rexx committee\n     have been implemented;\n\n   - an extensive test suite which test most parts of the features\n     listed above have been implemented, and Regina is able to run it\n     without problems; and\n\n   - the documentation for Regina has been completed.\n\nIf you find bugs or incompatibilities, please send me e-mail\ndescribing the bug. It is important that your bugreport contains:\n\n   - Description of what equipment you used, i.e. hardware\n     platform, operating system, compiler version, compiler\n     options used, version of Regina etc.\n\n   - A description of the buggy behavior (and the behavior that\n     you expected to see).\n\n   - Preferably a program that demonstrates the behavior.  The\n     program should be as small as possible, preferably not more\n     than 10 lines or so.\n\n   - If you have already fixed the bug, please append a context\n     diff of the changes you made to the source.\n\nPlease make sure that the bug is really a bug in the interpreter, not\njust a bug in your program. And also make sure that you've got the\nlatest release of Regina. If possible, run your program on other REXX\ninterpreters to see how they behave, and check with a REXX manual if\nyou have access to one. Bugreports are welcome, as well as other types\nof comments. You can send bugreports directly to my email address,\nlisted below.\n\nThere are four subdirectories.\n\n   - The first is 'trip' which is the start of a \"triptest\" for a REXX\n     interpreter, which is supposed to test most REXX interpreter\n     features.  If enough tests are gathered in this triptest, any\n     REXX interpreter that manages to run it would be fairly REXX\n     compatible. Such a trip test is not a perfect way of ensuring\n     compatibility, but it is far better than none.\n\n   - The next subdirectory is the 'demo', which contains some small\n     demo programs for REXX, mainly demonstrations of special\n     programming features in REXX. Also included are some common test\n     programs and routines distributed on the net. Note that the\n     programs in this directory are not covered by the GPL.\n\n   - The src directory, containing the source code for Regina.\n\n   - The 'doc' subdirectory, containing the documentation for Regina.\n     Unfortunately, this documentation is not complete, nor it is\n     completely correct at the moment, since I want to finish the\n     coding before continuing the work in the doc.\n\nSome of the things the interpreter does not have:\n\n   - The documentation is far from finished. It has lower priority\n     for the moment, until I have finished the interpreter itself.\n\n   - For the (external) commands, there is not a consistent shell in\n     the background to which commands are sent.  Instead either there\n     is a shell that is started up each time (ADDRESS SYSTEM), or the\n     command is run directly (ADDRESS PATH and COMMAND).  This will\n     be fixed ...\n\n   - I still need to test a lot of functionality that has been\n     implemented and are supposed to work.\n\n   - Lots of other things ...\n\nThere is a mailing list for announcements of new versions of Regina.\nIf you want to be on that list, send a request to be put on the list\nto the address: \u003crexx-request@pvv.unit.no\u003e\n\nAnders Christensen                     e-mail: anders@pvv.unit.no\nSINTEF RUNIT\nHogskoleringen 7i\nN-7034 Trondheim, Norway\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0branch%2Fregina","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0branch%2Fregina","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0branch%2Fregina/lists"}