Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

An Implementation in Python with a Compiler #653

Closed
wants to merge 72 commits into from

Conversation

jcguu95
Copy link

@jcguu95 jcguu95 commented Mar 20, 2024

Hello Joel Martin! Thanks for your inspiring work! Based on your python implementation, I implemented a compiled version: python-compile. It passes all relevant tests (for step2 to stepA, regular and soft), and it is 16 times faster per the performance test suite.

[./mal]$ make "perf^python"
----------------------------------------------
Performance test for python:
Running: env STEP=stepA_mal MAL_IMPL=js python_MODE=python ../python/run ../tests/perf1.mal
Elapsed time: 1 msecs
Running: env STEP=stepA_mal MAL_IMPL=js python_MODE=python ../python/run ../tests/perf2.mal
Elapsed time: 4 msecs
Running: env STEP=stepA_mal MAL_IMPL=js python_MODE=python ../python/run ../tests/perf3.mal
iters over 10 seconds: 9311

[./mal]$ make "perf^python-compile"
----------------------------------------------
Performance test for python-compile:
Running: env STEP=stepA_mal MAL_IMPL=js ../python-compile/run ../tests/perf1.mal
Running: env STEP=stepA_mal MAL_IMPL=js ../python-compile/run ../tests/perf2.mal
Running: env STEP=stepA_mal MAL_IMPL=js ../python-compile/run ../tests/perf3.mal
iters over 10 seconds: 148519

Would you like to merge this, or would you rather keep this maintained separately? Please let me know.

Cheers,
Jin

jcguu95 added 30 commits March 11, 2024 07:52
This took me a while.. and I need to redo the other operators. So far
only def! and +-*/ works.
Make it verbose and more easily debuggable.
1. Remove old commented code.
2. Give repls new prompts.
3. Refactor COMPILE in to smaller functions.
I feel the compiler should do more work, other than just delegating.
1. COMPILE now takes ast of function type.
2. Support eval and debugger toggle.
@kanaka
Copy link
Owner

kanaka commented Aug 6, 2024

@jcguu95 If it can be restructured to fit the code layout of other implementations (https://github.com/kanaka/mal/blob/master/docs/FAQ.md#code_split) then I would be willing to consider merging it. Otherwise, if that's too complicated or unwieldy then keeping it separate is probably best. Although I would be happy to include a link to it in the top level README if you like in the "External Implementations" section.

@jcguu95
Copy link
Author

jcguu95 commented Dec 21, 2024

@kanaka Thanks for your reply! I've moved on from this project for a while, so I don't think it's likely that I'd break them into steps. It'd be nice if you could mention it in the main page. Could you please let me know when you do so?

(I have renamed the project to be mal2py-compiler.)

PS Thank you so much for this inspiring project. I like it a lot :)

@kanaka
Copy link
Owner

kanaka commented Dec 23, 2024

@jcguu95 I've added a link to your project: 273bf87

Thanks for kind words. It's always a pleasure to hear from people who have been inspired or learned from mal.

@kanaka kanaka closed this Dec 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants