Calvin Rose
3078686f8f
Merge pull request #1468 from SyrupThinker/st/aarch64_ffi
...
Add support for the AAPCS64 calling convention
2024-06-26 06:55:04 -07:00
Calvin Rose
0f4ecd93ab
Fix #1469
2024-06-26 08:54:26 -05:00
Valentin Anger
4af187d0ca
Add support for the AAPCS64 calling convention
2024-06-23 18:22:25 +02:00
Calvin Rose
a5d6b22838
Check for __GLIBC__ instead of _GNU_SOURCE
...
musl doesn't obey this behavior.
2024-06-21 17:17:22 -05:00
Calvin Rose
3510e235ee
More work on compile-opt
2024-06-21 17:16:56 -05:00
Calvin Rose
b6fb7ae69c
x64 allow dynamically switching between windows and sysv target.
2024-06-17 23:02:05 -05:00
Calvin Rose
e5765b26d4
Working examples on windows.
...
Add some support for windows x64 ABI.
2024-06-17 07:07:20 -07:00
Calvin Rose
cdb3baaca3
Work on windows.
2024-06-16 13:37:25 -07:00
Calvin Rose
fda0a081f5
Fix quoting for import.
2024-06-16 10:57:14 -05:00
Calvin Rose
94b7a69741
More fixes for patch release.
2024-06-16 10:22:49 -05:00
Calvin Rose
6518257129
Merge pull request #1460 from pnelson/fix-typos
...
Fix typos
2024-06-16 08:21:52 -07:00
Calvin Rose
dc325188d0
Prepare for 1.35.1
2024-06-16 10:20:01 -05:00
Calvin Rose
c413bc2b4e
Don't assign variables positions on the stack that clobber import info.
...
(return address, previous basepoint, etc.)
2024-06-16 10:06:22 -05:00
Calvin Rose
dfdf734fc7
Merge branch 'master' into compile-opt
2024-06-16 09:31:11 -05:00
Philip Nelson
0b51ab157d
Fix typos
2024-06-16 06:59:27 -07:00
Calvin Rose
f95de25b15
Update docstrings.
2024-06-16 07:58:38 -05:00
Calvin Rose
f424f2936b
Merge pull request #1459 from sogaiu/dynvar-docstring-tweaks
...
Tweak some docstrings
2024-06-16 05:50:43 -07:00
sogaiu
2d6c2ee7c0
Tweak some dyn var docstrings
2024-06-16 08:48:30 +09:00
Calvin Rose
7cd106a10c
Prepare for 1.35.0 release.
2024-06-15 16:11:32 -05:00
Calvin Rose
0d9e999113
Prepare for 1.35.0 release.
2024-06-15 07:11:48 -05:00
Calvin Rose
75710ccabd
Error on buffer/push-uint16 with non 16 bit unsigned integer.
2024-06-15 06:47:47 -05:00
Calvin Rose
0f60115f27
Merge pull request #1457 from pnelson/buffer-push-uint
...
Fix buffer push uint max
2024-06-15 06:31:46 -05:00
Philip Nelson
16a3c85baa
Fix buffer push uint max
2024-06-14 18:15:31 -07:00
Calvin Rose
92ff1d3be4
Add only
option to merge-module
and import
.
...
This allows importing only selected bindings.
For example,
(import foo :only [bar baz])
(foo/bar) # works
(foo/buzz) # doesn't work, even if the foo module has a buzz
function.
2024-06-14 17:01:27 -05:00
Calvin Rose
314e684097
More work on x64 backend.
2024-06-14 16:57:32 -05:00
Calvin Rose
232a8faa35
More work compile-opt.
2024-06-13 07:27:48 -05:00
Calvin Rose
58441dc49f
Update gitignore.
2024-06-12 19:22:08 -05:00
Calvin Rose
dbc5d688e2
Merge branch 'master' into bundle-tools
2024-06-12 18:28:23 -05:00
Calvin Rose
c31d8b52ff
Add typed constants and lots more.
2024-06-12 13:57:33 -05:00
Calvin Rose
f0395763b7
More work on x86 target.
...
Also remove all (limited) type inference from the sysir. Type
inference is better done in frontend, limited inference in backend
just covers compilers issues.
Simple hello world with nasm working.
2024-06-10 20:16:04 -05:00
Calvin Rose
5b3c5a5969
Lots of work on calling conventions and x86 backend.
...
We need the ability to represent multiple calling conventions in IR.
All backends need to support a :default CC, but can also support more
for interop with system libraries, code from other compilers, syscalls, etc.
Also allow void returns.
2024-06-10 08:47:27 -05:00
Calvin Rose
af10c1d4b5
More work on x64 backend, especially branching.
...
Needs changes to IR to allow encoding immediates in all
instructions where possible. This makes the IR denser, means
we don't need `constant` and `callk`, and allows certain optimizations
like comparing to zero, using `inc` and `dec`, etc which are
specializations of more general instructions with constants.
2024-06-08 13:20:34 -05:00
Calvin Rose
3995fa86e2
More work on function calls.
2024-06-07 20:20:16 -05:00
Calvin Rose
9d7a279999
Merge branch 'master' into compile-opt
2024-06-07 19:28:17 -05:00
Calvin Rose
e2a8951f68
Address #1452 - Partial revert some changes from #1391
...
This doesn't seem to reintroduce the original issue. There was
definitely some interplay with #1431
Doing git bisect landed me at commit
2f0c789ea1
as the first bad commit for
issue #1452 .
2024-06-07 10:32:20 -05:00
Calvin Rose
3e273ce03a
More work on sysir.
2024-06-07 10:09:53 -05:00
Calvin Rose
25b7c74089
More work on register allocation and spilling.
...
Setup frontend.janet to show the basics of what is going on. Currently
emitting "fake" instructions just to hash out the idea.
One apparent issue is how we handle register spilling during variable
argument IR instructions (function calls). Arguments should come
_before_ the function call not after.
2024-06-05 17:50:11 -05:00
Calvin Rose
f0f03ad519
Delete dead code.
2024-06-04 21:11:08 -05:00
Calvin Rose
9e47cd94bd
Delete extra code.
2024-06-04 21:10:35 -05:00
Calvin Rose
7ea118f248
Begin work on simple x64 backend.
...
Introduce register allocation, spilling, etc. First implementation
will likely emit textual assembly and use a very bad register allocation
algorithm.
2024-06-03 08:35:08 -05:00
Calvin Rose
480c5b5e9d
Change how labels are recorded.
...
Disallow jumping to arbitrary instructions - instead, only allow jumps
to label ids. This will make various transformations and validations
easier since adding or remove instructions does not break jumps.
2024-06-02 09:43:33 -05:00
Calvin Rose
8a394f2506
Merge branch 'master' into compile-opt
2024-06-01 13:03:36 -05:00
Calvin Rose
e37575e763
Allow passing configs to bundle reinstall.
2024-05-31 19:20:34 -05:00
Calvin Rose
f4fd481415
copyfile should copy permission bits
2024-05-29 19:37:14 -05:00
Calvin Rose
8fca6b7af4
Don't expose bundle/pack, do expose bundle/add
...
Bundle/pack is a strange interface that is mostly just
to implement a safe reinistall process when the original source
is lost.
2024-05-29 07:20:37 -05:00
Calvin Rose
600e822933
Change interface for bundle/install
...
Name argument should be inferred in most cases. Also use :name
instead of :bundle-name in most places to be terser and simpler.
2024-05-26 16:26:08 -05:00
Calvin Rose
2028ac8a20
Merge branch 'master' into bundle-tools
2024-05-26 14:34:05 -05:00
Calvin Rose
7bae7d9efd
Merge changes from bundle-tools branch:
...
- Update file IO to explicitly use 64bit ftell/fseek
- Add env argument to eval
- Allow naming function literals with keywords.
2024-05-26 12:04:35 -05:00
Calvin Rose
cb54fb02c1
Whitespace.
2024-05-26 12:01:27 -05:00
Calvin Rose
7529abb542
Move functions in boot.janet around.
2024-05-26 11:54:21 -05:00