- Mathics Core 7.0.0은 Mathematica 호환 오픈소스 계산 시스템의 핵심 엔진을 정리하며, 향후 내장 함수 지연 로딩을 위한 기반을 마련함
- 새 내장 함수로
ComplexExpand,ConjugateTranspose,LeviCivitaTensor등 수식·선형대수·실수 판별 관련 기능이 추가됨 Range[],DirectedInfinity,Indeterminate,Graphics오류 표시,$CharacterEncoding변경 등 기존 호환성의 빈틈이 보완됨- 내장 함수 로딩은 암묵적 import 의존에서 벗어나
import_and_load_builtins()를 명시적으로 호출하는 방식으로 바뀜 - Python 3.11과 SymPy 1.12 지원을 포함하며,
Quantity,SparseArray,Derivative,Exit[],BaseForm관련 수정이 함께 들어감
릴리스 방향과 내부 정리
- Mathics Core 7.0.0은 향후 내장 함수 지연 로딩을 지원하기 위한 내부 구조 정리를 포함함
- Python 코드와 스타일을 현대화하고 타입 주석을 늘렸으며, 여러 철자 오류를 바로잡음
- SymPy와 Python 의존성을 더 최신 버전으로 갱신함
- 초기 로딩 속도를 높이고 초기 메모리 사용량을 줄이기 위한 작업도 진행됨
새 내장 함수
- 이번 릴리스에서 추가된 내장 함수는 다음과 같음
$MaxLengthIntStringConversionElementsComplexExpandConjugateTransposeLeviCivitaTensorRealAbs,RealSignRealValuedNumberQ
문서와 테스트 생성 개선
- PDF 문서의 서식 문제가 여러 곳에서 수정됨
- 장과 절 목차에서 섹션 번호 간격이 늘어남
- 내장 함수 정의 주변 여백이 늘어남
- 문서 전반의 철자 오류가 정리됨
- doctest 실행과 LaTeX 문서 생성 코드는 개정·리팩터링됨
- 내장 함수의 증분 업데이트를 허용함
- 중복 코드를 줄이는 방향으로 정리됨
- “Expression Structure”에는 Section Head-Related Operations 절이 새로 추가됨
- PDF 제목은 Mathics에서 Mathics3로 바뀌었고, 소개 문구도 업데이트됨
- 오래된 형식의 비노출·비교육용 doctest는 pytest로 전환됨
호환성과 사용자-visible 동작 변화
*Plot은 평가 중 메시지를 표시하지 않음Range[]는 음수di를 처리함- 관련 PR: #951
DirectedInfinity와Indeterminate지원이 개선됨Graphics와Graphics3D는 잘못된 primitive나 directive를 포함할 때 분홍색 배경으로 표시됨- Mathics-Django 인터페이스에서는 툴팁 오류 메시지도 함께 표시됨
$CharacterEncoding은 세션 내부에서 값을 변경할 수 있음
내부 구현과 API 변경
Abs와Sign에서eval_abs,eval_sign이 분리되어mathics.eval.arithmetic에 추가됨- 문자열에서 허용되는 최대 숫자 자릿수는 7000으로 설정됨
- Python이 자동 조정하지 않는 pyston 같은 환경에서는
MATHICS_MAX_STR_DIGITS환경 변수로 조정 가능함
- Python이 자동 조정하지 않는 pyston 같은 환경에서는
- 실수 비교 구현은 내부적으로
RealSign구현에 들어감 - Python 3.11에서는
$MaxLengthIntStringConversion이 큰 정수와 문자열 사이의 리터럴 변환 최대 크기를 제어함 - 내장 코드 로딩은 암묵적 방식이 아니라 명시적 지시 방식으로 바뀜
- 향후 내장 함수 지연 로딩이나 GNU Emacs autoload 방식의 “autoload”를 가능하게 하기 위한 변경임
- 새 API로
import_and_load_builtins()를 명시적으로 호출해야 함- 이전에는 import 순서에 따라 내장 함수 로딩 시점이 암묵적이고 불확정적이었음
mpmath에는 LRU 캐시가 추가됨
Quantity·SparseArray 등 버그 수정
Definitions가 pickle과 호환됨Quantity표현식 지원이 개선됨- 변환, 서식 지정, 산술 연산을 포함함
Graphics와Graphics3D의Background옵션이 다시 동작함String이 포함된 표현식에 대한 수치 비교 문제가 수정됨- 관련 이슈: #797
Infinity가 포함된Switch[]문제가 수정됨- 관련 이슈: #956
SparseArray에 대한Outer[]문제가 수정됨- 관련 이슈: #939
ArrayQ[]는SparseArray를 감지함- 관련 PR: #947
BoxExpressionError예외가 처리됨Derivative가True,False,List[]를 평가하는 동작이 수정됨Combinatorica패키지 수정이 포함됨- 동작하지 않던
Exit[]가 수정됨 BaseForm이$OutputForms에 포함됨
패키지 지원 버전
- Python 3.11을 지원함
- SymPy 1.12를 지원함