Commit Graph

344 Commits

Author SHA1 Message Date
Calvin Rose d2ebf4b52d Merge branch 'net' 2020-04-26 12:27:37 -05:00
Calvin Rose 69eb9531da Rename auxbin/jpm -> jpm. 2020-04-26 08:55:32 -05:00
Calvin Rose 596111c988 Merge branch 'master' into net 2020-04-17 15:08:26 -05:00
Calvin Rose 810ef7401c Update changelog and bump version to dev version. 2020-04-04 21:50:27 -05:00
Calvin Rose bb5c478704 Switch to two digit sonames.
Janet's versioning scheme is not 'true' semantic versioning.
Minor versions can have and often do have breaking changes.
Although such breakages are mostly avoided, only limited effort is
made to prevent this, and no system is in place to verify this.
Thus, stricter version pinning is needed.
2020-04-04 18:30:18 -05:00
Calvin Rose 6b89da4bb2 Use -Wl,-install_name,... on macos. 2020-04-04 13:44:21 -05:00
Calvin Rose 1d0e862129 Update Makefile for pkg-config issues and soname. 2020-04-04 13:09:59 -05:00
Calvin Rose 8f1527712e Merge branch 'master' into net 2020-03-05 18:08:35 -06:00
Calvin Rose f06addfe06 For #240, address case when LDCONFIG is empty 2020-03-03 18:13:25 -06:00
Calvin Rose 7c2c50ee16 For #240 - don't run ldconfig for DESTDIR installs. 2020-03-03 18:03:44 -06:00
Calvin Rose 8580d3c27e Address #240 - Support DESTDIR in Makefile. 2020-03-03 17:45:59 -06:00
Calvin Rose 951e10f272 Address #292
Faulty Makefile fallback.
2020-03-03 08:21:14 -06:00
Calvin Rose 2779037f13 Clean up Makefile. 2020-02-25 20:02:03 -06:00
Calvin Rose c0d2140d14 Begin net/ module in core.
Humble beginnings.
2020-02-01 20:39:54 -06:00
Calvin Rose 1bdde9c4f7 Fix warnings. 2020-01-28 23:46:14 -06:00
Calvin Rose 333ae7c4f8 Make amalgamtion the default when building.
This way we can support fewer build configurations. Also, remove
all undefined behavior due to use of memcpy with NULL pointers. GCC
was exploiting this to remove NULL checks in some builds.
2020-01-28 23:38:52 -06:00
Calvin Rose 62cf407f0c Remove lto.
Gosh Darnit, Travis!
2020-01-20 13:53:59 -06:00
Calvin Rose bbed72f39f Only enable lto on linux for now.
Was failing with clang, as the default clang linker doesn't
do LTO.
2020-01-20 13:37:10 -06:00
Calvin Rose 3c87d89df3 Enable LTO by default
Most compilers support it, and it gives a good perf increase OOTB.
2020-01-20 11:38:22 -06:00
Calvin Rose 8fbcae6029 Remove -march=native from Makefile
Instead, one can pass in CFLAGS to make
2020-01-18 20:01:12 -06:00
Calvin Rose a68ee7aac6 Update Copyright 2020. 2020-01-12 10:50:37 -06:00
Thodoris Sotiropoulos 5575e7577a Fix faults in Make build 2020-01-02 22:15:55 +02:00
Calvin Rose 9dd152dc28 Add features.h for feature test macros.
Because we use an amalgated build, feature
test macros should be set in a single file that
is included before any other headers, and is placed
at the top of the amalgamated build.
2019-12-30 19:06:15 -05:00
Calvin Rose 407d8af026 Address #233
Move _POSIX_C_SOURCE to internal header.
2019-12-30 12:31:26 -05:00
Calvin Rose 52dd0f132a Remove emscripten build.
Prefer using custom toolchain with amalgmated build.
2019-12-28 16:11:15 -05:00
Calvin Rose aa7f3411f5 Use JANET_SINGLE_THREADED to disable threads. 2019-12-12 17:39:22 -06:00
Calvin Rose eb1c21b0da Fix some example issue and warnings under -Os. 2019-12-08 12:40:05 -06:00
Calvin Rose 8a91c52fa2 Change pthreads linking with jpm, make, and meson.
Try to add pthread deps when compiling programs with jpm.
2019-11-27 14:52:20 -06:00
Calvin Rose bca0392738 First work on threading.
Posix only, needs to be disabled on windows. Also
the Makefile needs to be configurable, and meson.build
needs to take pthreads into account.
2019-11-26 23:13:53 -06:00
Calvin Rose 8911daaf6c Add --test flag to jpm.
Also test some select packages when testing installation.
This is used in CI to make sure that versions of Janet work with
the most libraries.
2019-11-09 10:03:56 -06:00
Calvin Rose 6591e7636d Copy janetconf to build for amalg target.
This makes testing the amalg easier.
2019-11-08 20:36:16 -06:00
Calvin Rose 58e3e63a89 Add jpm to release bundle. 2019-11-08 11:00:12 -06:00
Calvin Rose cf19cd5292 Add the quickbin command to jpm.
This is useful for making one off executable scripts
without needing to set up a project.janet file.
2019-10-29 20:33:18 -05:00
Calvin Rose 280dca3998 Add shell.c to the amalgamation.
This allows easy builds of the full interpreter with no
build system.

  1. Get janet.c, janet.h, janetconf.h, and shell.c in a directory. Edit
     janetconf.h as desired.
  2. gcc shell.c janet.c -lm -ldl -O2 -o janet (on GNU-Linux for example)
  3. ./janet -h (Yay!)
2019-10-29 19:18:44 -05:00
Calvin Rose 0d16b9e1a1 Move init.janet into cli-main in boot.janet
This makes it easier to get the CLI functionality when
embedding Janet, although the main reason is the init script
is now pre-compiled to bytecode when generating the boot image.
2019-10-29 18:16:32 -05:00
Calvin Rose 6ae5a9be60 Add -fvisibility in Makefile, provide meson example commands.
Shaves off 10 kb in binary. Also -fpic -> -fPIC in Makefile and jpm.
2019-10-05 10:38:58 -05:00
Crestwave 63e3e02a39 Fix installation on Haiku 2019-10-02 05:52:55 +00:00
Calvin Rose 9d020c3ec5 Update CHANGELOG.md 2019-09-22 18:00:53 -05:00
Calvin Rose a8afc5b81f Sourcemapping uses line, column instead of offsets.
This should be friendlier to most users. It does, however, mean
we lose range information. However, range information could be
recovered by re-parsing, as janet's grammar is simple enough to do this.
2019-09-22 17:18:28 -05:00
Calvin Rose 1b283c47b4 Remove macos update_dyld_shared_cache
This just doesn't work well for a non global install.
It is better packages that need this to run it themselves.
2019-09-20 13:13:05 -05:00
Calvin Rose 908a3b6f5c Address #160: Use ldconfig alternative on macos.
update_dyld_shared_cache seems to work on macos.
2019-09-18 12:20:59 -05:00
Alberto González Palomo 8753d2dcb8 Defuse tarbomb: wrap tar file contents in directory
https://en.wikipedia.org/wiki/Tar_(computing)#Tarbomb
http://www.linfo.org/tarbomb.html
2019-09-09 18:59:29 +02:00
Calvin Rose 8dc91755f7 Work on makefile and build for jpm.1 2019-09-05 12:28:11 -05:00
Calvin Rose 05695a35c7 Fix test-install after removing cook. 2019-08-28 21:05:34 -05:00
Calvin Rose 58ffb9d7a5 Remove cook and path from default install
Instead, combine cook into jpm so we can manipulate
JANET_PATH without messing with jpm. path was moved to
and external repository, https://github.com/janet-lang/path.git
2019-08-28 20:54:31 -05:00
Calvin Rose f903ee8acc Add quotes and remove input path as make target.
Make doesn't handle that or auto escape that very well, so
we only put known paths as Make targets.
2019-08-27 18:10:03 -05:00
Calvin Rose b0b1024f8a Try to fix some tests for CI. 2019-07-27 11:05:53 -05:00
Calvin Rose cc07ff987d Fix normal native building and make test-install.
Add executable generation testing to make test-install.
2019-07-27 09:53:28 -05:00
Calvin Rose 0384b83c31 Update emscripten makefile. 2019-06-24 17:23:01 -04:00
Calvin Rose f7f2f5e84f Address #129.
Don't rm -rf the wrong directory on uninstall.
2019-06-24 08:28:40 -04:00
Calvin Rose a29e717fd7 Start working to a full meson build.
One build system instead of three for Make + Meson + build_win.bat.
2019-06-20 16:33:28 -04:00
Calvin Rose 3d76d988c3 More work on installation and moving files around.
Move all installed libraries into auxlib.
Move all installed executable scripts into auxbin.
2019-06-01 10:38:28 -04:00
Calvin Rose 75818217a6 Update CI tasks. 2019-05-28 14:02:45 -04:00
Calvin Rose f12f896020 Change test-install 2019-05-28 12:59:21 -04:00
Calvin Rose 7569930b0c More work on cook and jpm. 2019-05-28 08:48:35 -04:00
Calvin Rose 1696de233c Add jpm tool, based on cook.
Modify cook as well.
2019-05-27 16:50:57 -04:00
Calvin Rose 4d5a95784a Add LDFLAGS to Lflags in generated janet.pc 2019-05-24 19:58:52 -04:00
Calvin Rose b43d93cf55 Add pkg-config to install. 2019-05-24 19:38:13 -04:00
Calvin Rose 5deb13d73e Update version 1.0.0 instead of 1.0.0-dev 2019-05-24 17:49:33 -04:00
Calvin Rose a303704a7d Add some tests for the amalgamated source/
Adds tests to Makefile and CI on Poisx platforms.
2019-05-23 10:34:01 -04:00
Calvin Rose 7d49e3e6f1 Add unification to match macro.
Using a quote on a symbol prevents the match
macro from trying to create a binding to it, and
instead tells it that we are binding to a symbol
that is already in scope.
2019-05-16 10:05:54 -04:00
Calvin Rose 30cb01e2f0
Merge pull request #102 from PaulBatchelor/master
Add static library
2019-05-16 07:30:42 -04:00
Paul Batchelor 516e031f67 Add static library 2019-05-15 22:38:18 -04:00
Calvin Rose 3331f2fa02 Update soname. 2019-05-15 11:39:18 -04:00
Calvin Rose dd1a199ebd Don't copy headers to JANET_PATH 2019-05-15 10:53:26 -04:00
Calvin Rose f35b5765d6 Set module/*headerpath* during bootstrap
Cook also uses module/*headerpath* for finding headers
rather than using module/*syspath*.
2019-05-15 10:49:16 -04:00
Calvin Rose 8359044408 Don't symlink into $(PREFIX)/lib/janet
Using the AUR installer, this seems to result in
symlinks into the cache, which may be an issue and looks
strange. Instead, we can just copy the file once for
the cook module.
2019-05-15 08:46:12 -04:00
Crestwave 3b6a51df24 Add support for Haiku 2019-05-15 01:03:17 +00:00
Calvin Rose 3c0f12ea4d Add library installation during `make install`
Got removed a while ago for some reason, I forgot why.
2019-04-28 16:02:05 -04:00
Calvin Rose d514eab627 Add regression test for #78 2019-04-09 09:14:40 -04:00
Calvin Rose 2c9195b507 More updates to meson
Redo amalg script so we can more easily run
it from Meson.
2019-03-23 13:50:50 -04:00
Calvin Rose 7f1b5d4d70 Merge core.janet into boot.janet
This simplifies the build machinery a bit.
core.janet is never actually included in the final
binary, it is just used to generate an image file.
2019-03-22 18:34:50 -04:00
Calvin Rose 25aa7a26c5 Add experimental meson build.
Should help with IDE integration.
2019-03-22 18:07:10 -04:00
Calvin Rose cb2caecbb3 Add janetconf.h for configuring builds.
Rather than edit the Makefile or the janet.h header yourself, use
janetconf.h to configure builds. This has the benefit of making it
easier to configure janet in a persitent but easy way.
2019-03-22 14:33:30 -04:00
Calvin Rose 95e54c66b6 Use one tag type true and false
We moved the literals true and false into one tag
type, so we an extra tag for raw pointer types
(light userdata). These can be used from the C API via
janet_wrap_pointer and janet_unwrap_pointer.
2019-03-13 14:50:25 -04:00
Calvin Rose 8d37e544ab Fix BSD builds.
Try to silence some more undefined C warnings
with -fsanitize=undefined.
2019-03-04 12:16:49 -05:00
Calvin Rose a4cc23971f Only use -rdyanmic at link time
Before, we were using -rdynamic as a compiler flag, but
it is only needed at link time. This also gets rid of some
annoying warnings in clang.
2019-03-03 18:55:10 -05:00
Calvin Rose 6158ec0ce5 Add -undefined dynamic_lookup on mac. 2019-03-03 15:18:17 -05:00
Calvin Rose 172261b89f Add a test-install target to the Makefile
This target will be used to check if an installation
of Janet is on the PATH, if native modules can be built
and used via the cook module, etc.
2019-03-03 14:48:17 -05:00
Calvin Rose 92a5567b4a Remove some makefile crust from older scripts. 2019-02-24 14:25:04 -05:00
Calvin Rose 0823eb7327 Change order of directory creation. 2019-02-21 11:50:48 -05:00
Calvin Rose 00a47dc0cb Begin work on new memory layout for all objects and GC.
The layout should actually be very similar to the old layout, but
the code will be much easier to change and should be more portable.
2019-02-21 11:22:29 -05:00
Calvin Rose 9d4effc02e Add make format to format code.
A consistent style should help with contributors and
readability. We use astyle as the formatter as can make a pretty
good approximation of the current style and my preferred style.

Astyle can be found at http://astyle.sourceforge.net/astyle.html
2019-02-19 20:51:34 -05:00
Calvin Rose dbcbb4466d We don't need to add module/\*headerpath\*.
We can just dump janet.h into the lib folder as well.
2019-02-18 22:25:40 -05:00
Calvin Rose 7927078b49 Include header path when building modules. 2019-02-18 20:27:00 -05:00
Calvin Rose ed72dcf82d Rename the header <janet/janet.h> to <janet.h>
Makes it easier to use and remember, and makes the
variable `module/*headerpath*` make more sense.
2019-02-18 20:13:35 -05:00
Tim Sedlmeyer a9574b692f
Don't call mandb during install
mandb is used on many but not all linux distributions and infrequently outside of linux to maintain the man page index files, so it should not be called as part of the install process.
2019-02-18 18:29:35 -05:00
Calvin Rose 540b326c54 Simpler way to set JANET_PATH at compile time. 2019-02-18 14:48:29 -05:00
Calvin Rose 660a2b41ae Set `module/*syspath*` to JANET_PATH at build time
The takes out the hardcoded reference to /usr/local/
2019-02-18 14:31:23 -05:00
Calvin Rose d2d502b9ae Remove ldconfig stuff. 2019-02-18 13:49:43 -05:00
Calvin Rose 3aae524964 Try to respect PREFIX more.
Remove automatic installation of shared library.
2019-02-18 13:46:35 -05:00
charles 06f38d3380 Update makefile for OpenBSD 2019-02-15 19:02:14 -05:00
Calvin Rose 89ef4eb634 Update emscripten build. 2019-02-08 11:04:33 -05:00
Calvin Rose fe27df528c Boot core library from image rather than source
This should speed up start time and reduce malloc/free
usage to about 15% of what is what previously for startup.
The current cost is slightly larger binary as the representaion
of the image is currently less compact than source code.
2019-02-08 00:44:30 -05:00
Calvin Rose 38a7e4faf1 Disallow NaN as table/struct key.
Fix bugs and add tests for denormalized tables
and structs.
2019-01-28 11:50:33 -05:00
Calvin Rose 00301ad26b Add build number to amalg build. 2019-01-24 00:26:57 -05:00
Calvin Rose 611543c48b Add source amalgamation
The amalgamated source concatenates all sources
to a file janet.c which can be used for
embedding janet, much in the same way as sqlite
or mongoose.
2019-01-24 00:15:58 -05:00
Calvin Rose e68a889fa9 Remove doc markdown and move it to website. 2019-01-21 13:49:44 -05:00
Calvin Rose b4934ceddc Make parser errors a bit better for files with no closing
delimiters.
2019-01-17 23:43:46 -05:00
Calvin Rose 1304f9263b Update peg docs and make bad backrefs not error the whole pattern, but just cause the current match attempt to fail. 2019-01-14 21:47:55 -05:00
Calvin Rose 170e785b72 Fix recursion in grammars. 2019-01-14 15:06:35 -05:00
Calvin Rose 5b1a3b8208 Make grammar tool completely generate grammar from scratch.
Remove grammar from source tree.
2019-01-08 19:59:54 -05:00
Calvin Rose be85196de8 Add callgrind task to Makefile.
Unify some parser states.
2019-01-06 21:49:24 -05:00
Calvin Rose 92e9e64945 Update CONTRIBUTING.md and make valtest 2019-01-06 12:32:44 -05:00
Calvin Rose 017ee2b0d1 Move gendoc.janet script. 2018-12-25 17:37:52 -05:00
Calvin Rose 6c8da9fe5c Install cook tool when installing janet. 2018-12-25 15:39:24 -05:00
Calvin Rose 9723ddb96b Fix string/number issue. 2018-12-22 16:24:08 -05:00
Calvin Rose ac9935c95f Add documentation to generated distribution
archive.
2018-12-17 22:48:37 -05:00
Calvin Rose 131ee29190 Add docs target to generate documentation. 2018-12-17 01:41:11 -05:00
Calvin Rose 24b9ae7820 Add doc files to distribution archives. 2018-12-15 15:42:27 -05:00
Calvin Rose 34a69d0318 Add janet logo,mMove some lib files to example. 2018-12-11 18:06:10 -05:00
Calvin Rose c971d8ab6e Fix install paths 2018-12-09 18:01:43 -05:00
Calvin Rose 0a15539d7b No longer make extra object files. 2018-12-09 17:51:53 -05:00
Calvin Rose 21d4b8fe1f Move tools out of src (src should be
only code that goes into final binary).
2018-12-09 17:49:00 -05:00
Calvin Rose 6f64b0c152 Switch to out of source build on unix/linux. 2018-12-09 17:37:11 -05:00
Calvin Rose 4bcbf65b5b Update appveyor and windows build_win script. 2018-12-08 17:10:46 -05:00
Calvin Rose 9329969ea7 Add tarball for installation. 2018-12-08 16:17:34 -05:00
Calvin Rose 16e514b351 Update version schema - now have version number
and build number.
2018-12-08 14:17:03 -05:00
Calvin Rose 7668cd5772 Don't use generated headers for embedded janet
code, use object files.
2018-12-06 14:30:11 -05:00
Calvin Rose 11cd1279d7 Update Makefile and fix fiber issues. When
creating an invalid fiber with the C api, the
program could segfault. This protects against this kind
of segafault.
2018-12-02 15:29:21 -05:00
Calvin Rose 52c919d96f Add qq (, uq and uqs) for a quasiquote macro.
quasiquoting is not (yet) supported as a special
form and has no syntactic sugar.
2018-11-30 01:58:52 -05:00
Calvin Rose ba2c4b265b Revert to GNU Makefile. 2018-11-28 19:56:58 -05:00
Calvin Rose 305c113c91 Eventually we will build on freebsd without gmake and gcc. 2018-11-28 19:48:44 -05:00
Calvin Rose f63b337cca Hopefully more cross platform makefile. 2018-11-28 19:22:08 -05:00
Calvin Rose 5de6e4c641 Try again with makefile. 2018-11-28 18:36:38 -05:00
Calvin Rose 486d15d50d First step to freebsd builds. 2018-11-28 18:31:03 -05:00
Calvin Rose 8bfea73ee7 Fix web build again, simplify fibers and fiber
implementation code.
2018-11-26 09:03:26 -05:00
Calvin Rose b2a1a4ec9b Add classes to core library. 2018-11-25 15:58:50 -05:00
Calvin Rose 4e689c2279 Add table test. Add :repeat to loop macro. 2018-11-19 14:49:10 -05:00
Calvin Rose 4c4eff9390 Replace cast with type pun. 2018-11-18 14:17:50 -05:00
Calvin Rose 69b6894f6b Add some tests for C api and code. 2018-11-18 13:56:27 -05:00
Calvin Rose 3d5c8e3584 Add a man page. 2018-11-18 09:35:41 -05:00
Calvin Rose 945b72468c Add a lot of documentation for functions. 2018-11-16 02:09:38 -05:00
Calvin Rose c9f76d2673 Emscripten build strange as ever. 2018-11-15 18:56:06 -05:00
Calvin Rose aa8384488c Fix makefile and add json doc. 2018-11-15 17:44:30 -05:00
Calvin Rose 853a839f6c Add git commit hash to build to get version. 2018-10-31 16:21:21 -04:00
Calvin Rose a20799b59a Change build options for emscripten. 2018-10-21 12:46:10 -04:00
Calvin Rose c1923c5ada Web assembly build with emscripten. 2018-10-16 23:08:26 -04:00
Calvin Rose e8a4e83a0d Update Makefile, json native module,
and test suite 2.
2018-10-04 17:25:46 -04:00
Calvin Rose 725fd52357 Don't add -lrt flag on macos 2018-09-10 14:56:39 -04:00
Calvin Rose a86540a876 Update to work on CENTOS. 2018-09-10 14:21:08 -04:00
Calvin Rose c8ef2a0d88 Rename to janet 2018-09-05 22:18:42 -04:00
Calvin Rose 73b397f7de Add json native instead of hello. Remove metabuild
code.
2018-08-26 11:28:51 -04:00
Calvin Rose 1b009b4f1f Fix dst_register. 2018-08-22 22:12:47 -04:00
Calvin Rose 510feeed7f Allow marshaling of more functions for core.
Fix indentation in some files.
2018-08-22 21:41:25 -04:00
Calvin Rose 5464fd5173 Fix some bugs. 2018-08-21 13:09:01 -04:00
Calvin Rose 48c2654312 Local changes. 2018-08-07 00:54:47 -04:00
Calvin Rose 11292c6bb3 Update require to handle natives better. 2018-07-16 22:55:45 -04:00
Calvin Rose 547529ebb2 Refactor dst_view_* functions. 2018-07-04 13:21:30 -04:00
Calvin Rose 1f37919f39 Rename boot.dst to core.dst 2018-07-04 00:21:18 -04:00