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

get MAKEINIT to run again (so we can build system from sources) #36

Closed
masinter opened this issue Sep 21, 2020 · 13 comments
Closed

get MAKEINIT to run again (so we can build system from sources) #36

masinter opened this issue Sep 21, 2020 · 13 comments

Comments

@masinter
Copy link
Member

The Interlisp tool set helped with some tools for allowing you to build systems from lisp sources, but it didn't enforce it, and we've seen instances #31 where it isn't true.

I imagine in many cases it was set up ok, but in the end we have to check it out file by file.

@rmkaplan has some cases where compiled and source files don't match.

think you have to weigh the risk between
-- the .dfasl is from the wrong version of the file, and it's broken
-- the dfasl is fine but recompiling from the right source will make things worse, because

  • a bug in the compiler (due to emulator or needing some declarations or other compile-time environment setup problems)

I don't think those things can be resolved quickly. We have sysouts that work and are pretty stable.
we have compiled files that work. let's put out a release of what we have and warn people and ask for help testing.
I'd like to get to the point where a full sysout can be rebuilt from sources (compilling every file from sources automatically (except having to have a 'starter' sysout to make an init to compile the compiler) but we're not there.

@masinter
Copy link
Member Author

idea: port MAKEINIT to Common Lisp. Then you'd just need a valid common lisp to remake the system from sources

@rmkaplan
Copy link
Contributor

rmkaplan commented Sep 30, 2020 via email

@masinter
Copy link
Member Author

what is the process for making an init? I only vaguely remember.

@Kirtai
Copy link

Kirtai commented Oct 13, 2020

idea: port MAKEINIT to Common Lisp. Then you'd just need a valid common lisp to remake the system from sources

This would also make Medley bootstrappable which would be a nice feature in itself.

@rmkaplan
Copy link
Contributor

rmkaplan commented Oct 13, 2020 via email

@Kirtai
Copy link

Kirtai commented Oct 14, 2020

It would also help separate the runtime tooling from the build time tooling. IIRC, I believe this was part of the motivation to make SBCL buildable from other lisp implementations.

@masinter masinter changed the title being able to build system automatically from sources1 get MAKEINIT to run again (so we can build system from sources) Oct 14, 2020
@masinter
Copy link
Member Author

Run time is build time in Interlisp, More or less on purpose.
If you run into a program error, you can stop and fix it and keep going.
Separating them isn't a project goal.

I changed the issue title to reflect the original intent

@Kirtai
Copy link

Kirtai commented Oct 14, 2020

My apologies for being so unclear. I was referring to preventing implementation details of the build system leaking into the target system. Iirc cmucl had problems with that which SBCL fixed.

I definitely wasn't suggesting splitting run time from build time. That the are the same is one of the things that appeals to me about lisp :)

@masinter
Copy link
Member Author

What I'm learning is that my github issues i've raised aren't good enough. It was very Interlisp-like to write enough that I could write more when I got to it. Maybe a 'needs explanation' tag for those issues here.

@masinter
Copy link
Member Author

@rmkaplan wrote

The procedure that I put together a few years ago (which led to the init.sysout that wouldn’t run) is encapsulated in current/MAKEINITGREET. It’s suppose to do its thing if you provide this as a greet file (although it may have to be updated if we have moved things around).

@masinter
Copy link
Member Author

The code for making an INIT sysout is some of the worst Lisp code I've ever seen, especially in its use of free variables. Never mind that I think I was responsible for the worst atrocities 30 years ago. There are an abundance of hacks.
I've made an INIT.DLINIT by faking the Dandelion microcode that was inserted into the beginning of the file.
working in the makeinit2 branch. I don't expect it to work, but I need a maiko INIT build to make more progress.

@masinter
Copy link
Member Author

masinter commented Mar 2, 2021

There is a lot of "clean up" work to do -- to simplify the code and remove unnecessary complexity, but we now have a path to making sysouts from scratch.

@masinter masinter closed this as completed Mar 2, 2021
@Anzus
Copy link
Contributor

Anzus commented Mar 2, 2021 via email

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

No branches or pull requests

4 participants