Commit Graph

282 Commits

Author SHA1 Message Date
Carlo Dapor 5d480a2944 Both clang and gcc define both MACOSX and ARCH_X86_64, no need to explicitly define them in the Makfiles. 2017-08-13 20:15:45 +02:00
Carlo Dapor 9f2575ce5e Argument to abs() is actually long, not int, thus use labs(). 2017-08-13 20:03:13 +02:00
Doug Currie 19cecdac20 Fix dropped GC root in fl_vector_alloc (#48) 2017-08-09 16:59:04 -04:00
Jeff Bezanson 2afeb42f92 Merge pull request #49 from dcurrie/fl_add_any-and-fl_mul_any_should-not-inexact-
Fix * and + to return inexact when given inexact args.
2017-08-09 15:22:04 -04:00
Doug Currie 2bb1c980e2 Fix * and + to return inexact when given inexact args. 2017-08-09 14:21:29 -04:00
Jeff Bezanson db4982b0ed Merge pull request #47 from jniewerth/patch-1
gc_handle buf earlier in fl_string to prevent segfaults
2017-07-13 15:43:18 -04:00
jniewerth d49122bb81 gc_handle buf earlier in fl_string to prevent segfaults 2017-07-12 15:10:19 +02:00
Jeff Bezanson d96227948b Merge pull request #40 from Ismael-VC/patch-1
Add Gitter badge.
2017-01-03 01:18:34 -05:00
Ismael Venegas Castelló 89310f69ea Add Gitter badge.
I've just opened a Gitter chat room with the hopes, that I can learn femtolisp and contribute to the Julia parser.

> # Welcome fellow femto lispers!

> Welcome @/all you have all been invited to this chat room because I noticed your interest of FemtoLisp, either by chatting directly, forking, staring, watching the femtolisp repository or one of the repositories from FemtoEmacs!  

> I hope we can meet, learn and teach this programming language together, please let anyone know who might me interested about this chat room, below are some common resources that I have just recently found:

> * FemtoLisp: https://github.com/JeffBezanson/femtolisp
> * FemtoEmacs: https://github.com/FemtoEmacs/Femto-Emacs
> * FemtoDocs: https://github.com/FemtoEmacs/femtodocs

> I want to learn flisp primary in order to understand the Julia programming language parser, I hope I can contribute documenting, proof reading raising issues and pull requests.

> I wish happy new year to everyone from Mexico!

> Bless the `femtolisp` maker! - AKA @JeffBezanson :D
2017-01-02 09:22:41 -06:00
Jeff Bezanson 4087d6af96 Merge pull request #37 from dcurrie/issue-#34
Fix parsetime to initialize timezone, issue #34.
2016-11-16 11:31:16 -05:00
Doug Currie b36d4fbf5d Fix parsetime to initialize timezone, issue #34. 2016-11-16 10:52:58 -05:00
Doug Currie 8342f9a1e9 fix issue #33 Negating most-negative-fixnum doesn't. (#35)
* fix issue #33 Negating most-negative-fixnum doesn't.

* Add unit test for issue #33 Negating most-negative-fixnum doesn't.
2016-11-15 17:49:18 -05:00
Rick Hanson 6bc3fe5f11 get_exename() for OpenBSD. (#17)
get_exename() for OpenBSD.

Issue

`get_exename()` gets the pathname of the current process.  In
femtolisp, this is used to set the top-level `*install-dir*` which in
turn is used as the location of the system image, `flisp.boot`.

There is only a trivial implementation of `get_exename()` for OpenBSD
that simply returns `NULL`.  A minor consequence is that the unit test
will fail for the default build (make) because the system image cannot
be found.

Fix

This commit provides an implementation of `get_exename()` for OpenBSD,
so that the system image can be found.

Unlike, say, Linux or FreeBSD, OpenBSD doesn't have a system call to
get the path of the current (or any, for that matter) process.  The
present code contains some logic that was put together to emulate the
behavior of the Linux and FreeBSD variants of `get_exename()` as best
as possible.  It works as described by the following.

(1) Call `sysctl(3)` (with `CTL_KERN` -> `KERN_PROC_ARGS` ->
    `KERN_PROC_ARGV`) to get the "`argv[0]`" of the current process.
    If the program (flisp) was called in "`basename` form" (i.e. as
    "flisp"), then go to (2).  Otherwise, return the value from
    `sysctl(3)` which will be an absolute or relative pathname,
    e.g. "/usr/local/bin/flisp" or  "../flisp".

    The code for (1) was adapted from old OpenBSD-specific `tmux` code
    that has since been abandoned by the author only because he deemed
    it "too expensive".  For that code, see

    8c259f562b/tree/osdep-openbsd.c

(2) Since we now only have "flisp", we need to find out where it is
    located on the system.  We assume that a program like the shell
    had to crawl `PATH` to find "flisp"; hence we do the same.

    The code for (2) was adapted from the `which` utility in OpenBSD.
    See

    http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/usr.bin/which/which.c?rev=1.20&content-type=text/plain

Finally, any error condition returns `NULL`, which is the same
behavior of the other `get_exename()` variants.

* Resolve relative pathnames to absolute, for OpenBSD get_exename().
2016-11-15 15:12:14 -05:00
Jeff Bezanson 47b3876d57 update README: `map` is now built in. fixes #26 2016-09-23 16:06:44 -04:00
Jeff Bezanson bf5e0d2210 Merge pull request #18 from schani/master
get_exename() for OSX >= 10.9
2016-09-17 14:43:59 -04:00
Jeff Bezanson 41504aa58b fix #24, make `<=` and `>=` work on strings 2016-09-17 14:30:05 -04:00
Jeff Bezanson 68c5b12255 fix #22
segfault printing stack trace for error during evaluation of argument
default values
2016-08-09 22:58:44 -04:00
Mark Probst 49ec8cf379 get_exename() for OSX >= 10.9 2015-05-06 15:36:41 -07:00
Jeff Bezanson 2923137ef0 Merge pull request #16 from cryptorick/freebsd-first-class
Make FreeBSD a "first class citizen" among femtolisp's build OSes.
2015-04-19 19:04:32 -04:00
Rick Hanson 74041edf56 Make FreeBSD a "first class citizen" among femtolisp's build OSes.
It looks like FreeBSD should do what OpenBSD does in femtolisp's code.
The biggest change here (I think) is that of determining the correct
value of CC in the Makefile(s).  As of version 10, FreeBSD's base
compiler is clang; so there is now some logic in the Makefile(s) to
determine if the build is occurring on a FreeBSD system >= 10.0.  If
so, then the value of CC will be "clang"; otherwise, it will be "gcc",
as before.
2015-04-11 15:21:02 -04:00
Jeff Bezanson ff34b09a3c fix a small bug in quasiquote 2015-02-15 17:09:40 -05:00
Jeff Bezanson 8f04eea847 fix bug in file-not-found due to incomplete init of the ios_t 2014-05-22 18:09:49 -04:00
Jeff Bezanson 27b18d04d0 Merge pull request #12 from tluyben/master
Femtolisp works now on modern macs (fix from Julia)
2014-02-26 13:11:16 -05:00
tycho luyben 54c441e29b Femtolisp works now on modern macs (fix from Julia) 2014-02-26 18:45:02 +01:00
Jeff Bezanson 1e6c71f655 fix a use-after-free memory bug 2013-10-22 00:25:25 -04:00
Jeff Bezanson 3f28e8dc94 fix lack of error when calling builtins with the wrong number of args 2013-08-26 16:55:17 -04:00
Jeff Bezanson 518415febf remove more unused stuff 2013-06-11 18:15:48 -04:00
Jeff Bezanson 92542d0b78 simpler proxy function for list builtin 2013-06-11 17:58:15 -04:00
Jeff Bezanson 2c454342da gitignore flisp.boot.bak 2013-06-11 17:40:46 -04:00
Jeff Bezanson 6041c7b40e remove and clean up some old files 2013-06-11 17:31:51 -04:00
Jeff Bezanson 07dfa697df Merge branch 'master' of github.com:JeffBezanson/femtolisp 2013-06-10 19:13:52 -04:00
Jeff Bezanson 3293630c84 fix argument handling bug in fl_map1
need to pop after _applyn; functions might rewrite the stack to
contain non-values.
2013-06-10 19:12:53 -04:00
Jeff Bezanson 0aa1359a3e Merge branch 'master' of github.com:JeffBezanson/femtolisp 2013-06-08 19:29:46 -04:00
Jeff Bezanson a76b29eee8 several minor changes and additions:
- add io.ungetc and string.isutf8
- maintain input order in delete-duplicates
- error for unicode escapes greater than 0x10ffff
- make more builtins constant (use setc instead of set)
- use prog1 in begin0 macro
- array-ref was incorrectly called array-ref! in aliases.scm
- use (void) instead of () in 0-arg C functions
- don't do arithmetic with void*
2013-06-08 19:29:15 -04:00
Jeff Bezanson 6327453895 Merge pull request #8 from jturner/master
Adds support for OpenBSD and INITFILE define
2013-06-03 21:15:47 -07:00
James Turner 56b46ba923 Allow the defining of an init file at build time
Since OpenBSD is unable to determine the pathname of a running process,
this allows us to specify the full path to flisp.boot. This will also
come in handy for system wide installs where you want flisp to live in
bin and flisp.boot to live in share or a similar location.
2013-06-03 21:40:51 -04:00
James Turner 19a835847c Add support for OpenBSD 2013-06-03 21:40:14 -04:00
Jeff Bezanson 2c2c145fbb Merge pull request #7 from jondistad/osx-update
Minor modifications to build on current OS X machine
2013-05-12 23:29:18 -07:00
Jon Distad 3707cc21ab Updated carbon path and pointer size check 2013-05-08 19:41:21 -04:00
Jeff Bezanson fe8b88cfc6 fix bug printing custom cvalue types that lack print methods 2013-03-31 00:20:54 -04:00
Jeff Bezanson a0707331b8 add wcwidth.c for windows 2013-03-29 00:43:52 -04:00
Jeff Bezanson 2b105a5212 change wcwidth detection
fix some compiler warnings
2013-03-29 00:35:42 -04:00
Jeff Bezanson 8a63b14754 Merge pull request #6 from nroza/master
preprocessor platform detection and extern decl
2013-03-28 21:17:32 -07:00
Neil d35a5d87aa adding /llt/*.a to .gitignore 2013-03-19 20:04:19 -04:00
Neil b6623413b9 added /llt/*.o to .gitignore 2013-03-19 20:01:40 -04:00
Neil 7b771097fc trying some preprocessor platform detection 2013-03-17 15:02:33 -04:00
Jeff Bezanson ee807a2cf3 fix a bug in map
faster delete-duplicates for long lists
2013-02-11 04:48:21 -05:00
Jeff Bezanson 71a1cb6f09 update tiny/lisp.c for 64-bit 2012-10-11 23:00:29 -04:00
Jeff Bezanson 2bc8ab38fd some fixes to macosx makefiles 2012-10-11 22:36:02 -04:00
Jeff Bezanson 72d1ee7522 fixing large int64 comparison bug 2012-03-15 00:21:39 -04:00