Commit Graph

50 Commits

Author SHA1 Message Date
Edwin Brady
5ed27947cb Small concurrency fixes
Conditional variables with timeout in Chez didn't work, so changed to a
consistent meaning of the timeout (microseconds). Also fix linearity of
unsafePerformIO.
2020-06-23 19:06:30 +01:00
Niklas Larsson
4c6670966d
Merge pull request #312 from ska80/support-chez
Update Chez support for *BSD operating systems
2020-06-16 14:40:45 +02:00
Niklas Larsson
0c7fc9b73c simplify win32_modenv 2020-06-16 14:09:12 +02:00
Niklas Larsson
2e8f618f00 Apparently overwrite should report success 2020-06-16 14:02:04 +02:00
Niklas Larsson
8540728202 Handle overwrite on windows
Expand test to test overwrite
2020-06-16 13:44:10 +02:00
Niklas Larsson
8633dde240 Add stdlib include 2020-06-16 12:53:36 +02:00
Niklas Larsson
6974b318a3 Add test for setenv and unsetenv 2020-06-16 12:36:39 +02:00
Niklas Larsson
630e4219fc Fix unsetenv
implement Windows support
2020-06-16 12:09:22 +02:00
Kamil Shakirov
24226edc83 Update Chez support for *BSD operating systems 2020-06-16 16:03:38 +06:00
Tim Süberkrüb
e9a80891b7 Extend Control.App.FileIO 2020-06-12 17:30:54 +02:00
Niklas Larsson
aea0c1fd15 Remove unused functions from idris_buffer.c 2020-06-11 17:35:29 +02:00
Edwin Brady
0a246af449 Make Buffer more primitive
Meaning that the FFI is aware of it, so you can send arbitrary byte data
to foreign calls. Fixes #209

This means that we no longer need the hacky way of reading and writing
binary data via scheme, so can have a more general interface for reading
and writing buffer data in files.

It will also enable more interesting high level interfaces to binary
data, with C calls being used where necessary.

Note that the Buffer primitive are unsafe! They always have been, of
course... so perhaps (later) they should have 'unsafe' as part of their
name and better high level safe interfaces on top.

This requires updating the scheme to support Buffer as an FFI primitive,
but shouldn't affect Idris2-boot which loads buffers its own way.
2020-06-11 14:05:52 +01:00
Edwin Brady
ca28dab1d7 Add finalisers for Racket back end
Like Chez, we also need an explicit call to the garbage collector at the
end to ensure that all the finalisers get run on exit.
2020-06-08 22:13:24 +01:00
Edwin Brady
d60feaace0 Add finalisers to Chez back end
This involves new primitives GCPtr and GCAnyPtr which are pointer types
that have finalisers attached. The finalisers are run when the
associated pointer goes out of scope.

In the test, I am assuming that the GC will only be called once, right
at the end. Otherwise, the output isn't guaranteed to be deterministic!
Let's see how this assumption holds...

This is currently Chez only. I think it'll be easy enough to add to
the Racket and Gambit back ends too.
2020-06-08 20:34:23 +01:00
Thomas Lin
fc8e6b1fef Use GetSystemTimeAsFileTime on older Windows 2020-06-02 10:30:44 +08:00
Edwin Brady
d0021f7e48
Merge pull request #212 from normalcoder/gambit-ffi-callbacks
Gambit ffi callbacks
2020-06-01 12:41:58 +01:00
Edwin Brady
2eb2ce6097 Add Bits primitives
Including appropriate casts, and Num/Eq/Ord/Show implementations.
Also includes new primitives in Data.Buffer, and calls to foreign
functions in C as 'unsigned'.
2020-06-01 11:48:03 +01:00
normalcoder
e001d266fe Add sys/time.h to satisfy xcode.
It seems relevant to all BSD systems.

In xcode the option -Wno-error-implicit-function-declaration is enabled. So the following error occured:
Idris2/support/c/idris_file.c:76:13: Missing '#include <sys/time.h>'; declaration of 'select' must be imported from module 'Darwin.POSIX.sys.time' before it is required

I hope it won't break anything on linux.
2020-06-01 00:48:19 +03:00
Tim Süberkrüb
46f7b78b0e Try to fix pclose for Windows
Co-authored-by: Niklas Larsson <metaniklas@gmail.com>
2020-05-28 16:12:26 +02:00
Tim Süberkrüb
c2dfe7de7f Add popen and pclose from Idris 1 2020-05-28 12:58:03 +02:00
Marek Labos
9160d2772a Fix typo in backends/index.rst and racket/support.rkt 2020-05-25 14:02:49 +01:00
Edwin Brady
c3d13d0854
Merge pull request #93 from ska80/better-names
Rename some file/dir manipulation functions for consistency
2020-05-24 20:16:01 +01:00
Niklas Larsson
8d16980b81 Remove dependency on pthreads on Windows 2020-05-24 19:56:26 +02:00
Kamil Shakirov
80344b5435 Merge branch 'master' into better-names 2020-05-24 07:59:25 +06:00
Edwin Brady
ad9a2a187f Fix Char casting
For the same behaviour as Idris 1, the primitive cast should return 0 if
the integer is out of bounds. (We should probably drop the Cast
implementation though, since ideally they won't be lossy in general, but
that's an issue for another time...)

All the tests pass in racket now, for me.
2020-05-23 22:19:10 +01:00
Edwin Brady
cff5fc2625 Workaround for byte vectors in Racket
Racket appears to have a different notion of current directory than the
system does, so we need to tell it which directory we think we're in
when reading and writing bytevectors using the scheme file functions.
2020-05-23 21:37:31 +01:00
Kamil Shakirov
307265aaab Update C support header files 2020-05-24 00:41:53 +06:00
Kamil Shakirov
e61e44205b Merge branch 'master' into better-names 2020-05-24 00:26:52 +06:00
Niklas Larsson
a92fb3a3b0
Merge pull request #120 from idris-lang/fix_build
Fix Windows build
2020-05-23 19:12:19 +02:00
Tim Süberkrüb
5dde7063f8 Add popen and pclose from Idris 1 2020-05-23 18:42:05 +02:00
Edwin Brady
ae81e9140a Fix Racket buffer loading code
Should return #f on failure, not an empty buffer, for consistency with
Chez
2020-05-23 17:39:07 +01:00
Niklas Larsson
81c59fd5d1
Fix Windows build 2020-05-23 18:05:55 +02:00
Edwin Brady
1857e4b3fe Add flag for windows in support Makefile 2020-05-23 16:47:10 +01:00
Edwin Brady
e17f66244a Move network support to libidris2_support
This makes the support stuff much simpler, and also makes the racket
bootstrap process easier
2020-05-23 15:52:33 +01:00
Marek Labos
9108410c1e Define blodwen-os in Gambit support.scm 2020-05-21 23:09:02 +01:00
Niklas Larsson
d50bb099ea Windows support 2020-05-21 15:13:06 +02:00
Kamil Shakirov
f696335f2d Rename some file/dir manipulation functions
Renamed:

fileRemove -> removeFile

dirOpen -> openDir
dirClose -> closeDir
rmDir -> removeDir
2020-05-21 18:32:35 +06:00
Edwin Brady
5b88afb3ef Add racket bootstrap script 2020-05-19 22:56:27 +01:00
Edwin Brady
48c6c4aa81 Write Ints as 64 bit
Since they might be... This is especially likely for module hashes, and
if we don't get it right, the Racket runtime might fail to write the
buffer. This makes the code buildable with the Racket back end.
2020-05-19 16:25:58 +01:00
Edwin Brady
8380a6fa9e
Merge pull request #4 from ska80/refactor-makefiles
Refactor makefiles
2020-05-19 16:23:06 +01:00
Edwin Brady
953e8f4913
Merge pull request #3 from ska80/ignore-files
Update .gitignore files
2020-05-19 16:22:41 +01:00
Kamil Shakirov
b801b97fcc Refactor makefiles 2020-05-19 18:50:47 +06:00
Kamil Shakirov
47e943cc7d Update .gitignore files 2020-05-19 17:49:21 +06:00
Edwin Brady
f749f3e277
Merge pull request #2 from melted/fix_win
Windows fixes
2020-05-19 12:30:54 +01:00
Edwin Brady
6bbb914fca
Merge pull request #1 from edwinb/remove-directory-system
Add rmDir to System.Directory
2020-05-19 12:24:35 +01:00
Niklas Larsson
1bebd7d070 Windows fixes 2020-05-19 13:13:01 +02:00
Edwin Brady
456414cffd Generate IdrisPaths 2020-05-18 20:24:48 +01:00
André Videla
3321dc6be3 Add rmDir to System.Directory 2020-05-18 18:28:33 +01:00
Edwin Brady
052713b645 Adding missing scheme support
Sorry!
2020-05-18 14:55:43 +01:00
Edwin Brady
80450bbc8e Add missing C support 2020-05-18 14:51:28 +01:00