-
-
Notifications
You must be signed in to change notification settings - Fork 5
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
Port to Python 3 #88
Comments
|
Ohhh OK I was too naively reading the claim that OPy is a small subset of Python2… Sorry. |
I won't pretend to have a really deep understanding of it. IIUC it's a subset in that it builds the py27 and then uses some tree-shaking process to try and track what parts of that python are actually exercised by the oil codebase, and then do (magic? crimes?) to get discard parts that it didn't need for whatever load/memory performance it can claw back by doing so. |
Can xonsh be used to replace oil? |
xonsh's syntax is probably too incompatible with bash to be useful here |
My understanding aligns with figsoda's. xonsh is Python + some bits of Shell. As they put it on the landing page:
Pretty trivial to find valid bash that it can't parse: $ xonsh <<EOF
{ declare -gA bashup_ev bashup_ev_r
}
EOF
File "<stdin>", line 1
{ declare -gA bashup_ev bashup_ev_r
^
SyntaxError: ('code: bashup_ev',) Oil's OSH parser is almost-entirely-Bash-compatible. |
Well, I see some discussions about xonsh's bash-compatibility in xonsh/xonsh#4015, and the issue author has mentioned bashlex - Python parser for bash. Would it be helpful here? |
resholve uses the OSH parser (and, thus, python2) because it forms the foundation of a working shell that can actually execute nearly all of Bash and is tested against a massive corpus of wild scripts, which is generally what we want for a tool that we can trust to be able to parse, rewrite, and emit the vast majority of Bash/POSIX shell found in the wild without breaking it. bashlex (or any other bash parser) might work, but it isn't battle-tested like OSH is. It exists to power explainshell.com, which generally just needs to handle a single line of shell at a time. It doesn't have to worry about deploying broken scripts if the parser doesn't recognize a structure and subtly changes it on the way back out. If you look through the issues, it's common to see syntax that doesn't work and the maintainer acknowledges that it doesn't work because he didn't need it for his case. |
Python 2 has been EOL since January 1, 2020 and it is insecure. That's relevant when parsing other people's code. See NixOS/nixpkgs#201859.
The text was updated successfully, but these errors were encountered: