Skip to content

Fix command syntax for GCL FriCAS execution#41766

Merged
vbraun merged 1 commit into
sagemath:developfrom
cxzhong:patch-2
Mar 22, 2026
Merged

Fix command syntax for GCL FriCAS execution#41766
vbraun merged 1 commit into
sagemath:developfrom
cxzhong:patch-2

Conversation

@cxzhong

@cxzhong cxzhong commented Mar 6, 2026

Copy link
Copy Markdown
Contributor

GCL 2.7.1 has built-in -eval processing in its process-some-args function (at gcl_top.lsp line 213):

((string-equal x "-eval") (eval (read-from-string (pop args))))

The -- tells GCL to stop processing its own command-line options, so -eval arguments are left for FriCAS's own evalInlineCode() to handle. This is exactly how the texmacs mode already works (line 98 of the same script). Without --, GCL's process-some-args intercepts -eval and tries to read-from-string the argument as raw Lisp, which fails on FriCAS system commands like )quit.

In sage, FriCAS with GCL hang on

sage: from sage.features.fricas import FriCAS
sage: FriCAS().is_functional()

See the suggestion from fricas/fricas#214

📝 Checklist

  • The title is concise and informative.
  • The description explains in detail what this PR is about.
  • I have linked a relevant issue or discussion.
  • I have created tests covering the changes.
  • I have updated the documentation and checked the documentation preview.

⌛ Dependencies

@github-actions

github-actions Bot commented Mar 6, 2026

Copy link
Copy Markdown

Documentation preview for this PR (built with commit 0108a58; changes) is ready! 🎉
This preview will update shortly after each push to this PR.

@tscrim

tscrim commented Mar 6, 2026

Copy link
Copy Markdown
Collaborator

@mantepse You might be interested in this.

@mantepse mantepse self-assigned this Mar 6, 2026
@cxzhong

cxzhong commented Mar 9, 2026

Copy link
Copy Markdown
Contributor Author

@mantepse can you review this?

@dimpase dimpase requested a review from mantepse March 9, 2026 13:56
@cxzhong

cxzhong commented Mar 10, 2026

Copy link
Copy Markdown
Contributor Author

In fricas with gcl, I have tested this.

@mantepse

Copy link
Copy Markdown
Contributor

It seems that it does work with sbcl-based FriCAS. Unfortunately, if one uses a development version of FriCAS, is_functional will not work, because the version will then be something like '2025.12.23git', which is not recognized as a proper version.

Anyway, lgtm.

@mantepse mantepse left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@cxzhong

cxzhong commented Mar 10, 2026

Copy link
Copy Markdown
Contributor Author

Thanks

vbraun pushed a commit to vbraun/sage that referenced this pull request Mar 15, 2026
sagemathgh-41766: Fix command syntax for GCL FriCAS execution
    
<!-- ^ Please provide a concise and informative title. -->
<!-- ^ Don't put issue numbers in the title, do this in the PR
description below. -->
<!-- ^ For example, instead of "Fixes sagemath#12345" use "Introduce new method
to calculate 1 + 2". -->
<!-- v Describe your changes below in detail. -->
<!-- v Why is this change required? What problem does it solve? -->
<!-- v If this PR resolves an open issue, please link to it here. For
example, "Fixes sagemath#12345". -->
GCL 2.7.1 has built-in -eval processing in its process-some-args
function (at gcl_top.lsp line 213):
```
((string-equal x "-eval") (eval (read-from-string (pop args))))
```
The -- tells GCL to stop processing its own command-line options, so
-eval arguments are left for FriCAS's own evalInlineCode() to handle.
This is exactly how the texmacs mode already works (line 98 of the same
script). Without --, GCL's process-some-args intercepts -eval and tries
to read-from-string the argument as raw Lisp, which fails on FriCAS
system commands like )quit.

In sage, FriCAS with GCL hang on
```
sage: from sage.features.fricas import FriCAS
sage: FriCAS().is_functional()
```
See the suggestion from fricas/fricas#214


### 📝 Checklist

<!-- Put an `x` in all the boxes that apply. -->

- [ ] The title is concise and informative.
- [ ] The description explains in detail what this PR is about.
- [ ] I have linked a relevant issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation and checked the documentation
preview.

### ⌛ Dependencies

<!-- List all open PRs that this PR logically depends on. For example,
-->
<!-- - sagemath#12345: short description why this is a dependency -->
<!-- - sagemath#34567: ... -->
    
URL: sagemath#41766
Reported by: Chenxin Zhong
Reviewer(s): Martin Rubey
vbraun pushed a commit to vbraun/sage that referenced this pull request Mar 18, 2026
sagemathgh-41766: Fix command syntax for GCL FriCAS execution
    
<!-- ^ Please provide a concise and informative title. -->
<!-- ^ Don't put issue numbers in the title, do this in the PR
description below. -->
<!-- ^ For example, instead of "Fixes sagemath#12345" use "Introduce new method
to calculate 1 + 2". -->
<!-- v Describe your changes below in detail. -->
<!-- v Why is this change required? What problem does it solve? -->
<!-- v If this PR resolves an open issue, please link to it here. For
example, "Fixes sagemath#12345". -->
GCL 2.7.1 has built-in -eval processing in its process-some-args
function (at gcl_top.lsp line 213):
```
((string-equal x "-eval") (eval (read-from-string (pop args))))
```
The -- tells GCL to stop processing its own command-line options, so
-eval arguments are left for FriCAS's own evalInlineCode() to handle.
This is exactly how the texmacs mode already works (line 98 of the same
script). Without --, GCL's process-some-args intercepts -eval and tries
to read-from-string the argument as raw Lisp, which fails on FriCAS
system commands like )quit.

In sage, FriCAS with GCL hang on
```
sage: from sage.features.fricas import FriCAS
sage: FriCAS().is_functional()
```
See the suggestion from fricas/fricas#214


### 📝 Checklist

<!-- Put an `x` in all the boxes that apply. -->

- [ ] The title is concise and informative.
- [ ] The description explains in detail what this PR is about.
- [ ] I have linked a relevant issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation and checked the documentation
preview.

### ⌛ Dependencies

<!-- List all open PRs that this PR logically depends on. For example,
-->
<!-- - sagemath#12345: short description why this is a dependency -->
<!-- - sagemath#34567: ... -->
    
URL: sagemath#41766
Reported by: Chenxin Zhong
Reviewer(s): Martin Rubey
vbraun pushed a commit to vbraun/sage that referenced this pull request Mar 21, 2026
sagemathgh-41766: Fix command syntax for GCL FriCAS execution
    
<!-- ^ Please provide a concise and informative title. -->
<!-- ^ Don't put issue numbers in the title, do this in the PR
description below. -->
<!-- ^ For example, instead of "Fixes sagemath#12345" use "Introduce new method
to calculate 1 + 2". -->
<!-- v Describe your changes below in detail. -->
<!-- v Why is this change required? What problem does it solve? -->
<!-- v If this PR resolves an open issue, please link to it here. For
example, "Fixes sagemath#12345". -->
GCL 2.7.1 has built-in -eval processing in its process-some-args
function (at gcl_top.lsp line 213):
```
((string-equal x "-eval") (eval (read-from-string (pop args))))
```
The -- tells GCL to stop processing its own command-line options, so
-eval arguments are left for FriCAS's own evalInlineCode() to handle.
This is exactly how the texmacs mode already works (line 98 of the same
script). Without --, GCL's process-some-args intercepts -eval and tries
to read-from-string the argument as raw Lisp, which fails on FriCAS
system commands like )quit.

In sage, FriCAS with GCL hang on
```
sage: from sage.features.fricas import FriCAS
sage: FriCAS().is_functional()
```
See the suggestion from fricas/fricas#214


### 📝 Checklist

<!-- Put an `x` in all the boxes that apply. -->

- [ ] The title is concise and informative.
- [ ] The description explains in detail what this PR is about.
- [ ] I have linked a relevant issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation and checked the documentation
preview.

### ⌛ Dependencies

<!-- List all open PRs that this PR logically depends on. For example,
-->
<!-- - sagemath#12345: short description why this is a dependency -->
<!-- - sagemath#34567: ... -->
    
URL: sagemath#41766
Reported by: Chenxin Zhong
Reviewer(s): Martin Rubey
@vbraun vbraun merged commit 251a9c6 into sagemath:develop Mar 22, 2026
22 of 24 checks passed
@cxzhong cxzhong deleted the patch-2 branch March 23, 2026 02:26
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.

4 participants