hython-lang 2.0.0__tar.gz → 2.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {hython_lang-2.0.0 → hython_lang-2.0.1}/CHANGELOG.md +6 -0
- hython_lang-2.0.1/PKG-INFO +389 -0
- hython_lang-2.0.1/README.md +365 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/installer/hython.wxs +7 -2
- {hython_lang-2.0.0 → hython_lang-2.0.1}/pyproject.toml +1 -1
- {hython_lang-2.0.0 → hython_lang-2.0.1}/scripts/build_hython_native.py +2 -1
- {hython_lang-2.0.0 → hython_lang-2.0.1}/scripts/build_installer.py +16 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython/__init__.py +1 -1
- hython_lang-2.0.1/src/hython_lang.egg-info/PKG-INFO +389 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_release_contract.py +2 -2
- hython_lang-2.0.0/PKG-INFO +0 -327
- hython_lang-2.0.0/README.md +0 -303
- hython_lang-2.0.0/src/hython_lang.egg-info/PKG-INFO +0 -327
- {hython_lang-2.0.0 → hython_lang-2.0.1}/LICENSE +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/MANIFEST.in +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/SECURITY.md +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/assets/hython-icon.png +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/assets/hython.ico +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/build-hython.bat +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/build-installer.bat +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/docs/COMPILER.md +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/docs/LANGUAGE.md +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/examples//354/225/210/353/205/225.hy" +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/examples//354/273/264/355/214/214/354/235/274.hy" +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/examples//355/225/234/352/270/200/354/230/244/353/245/230.hy" +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/publish-pypi.bat +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/scripts/build_hython_exe.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/scripts/build_pypi.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/scripts/hython_frozen_launcher.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/scripts/stability.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/setup.cfg +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython/__main__.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython/bytecode.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython/cli.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython/compiler.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython/compiler_manager.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython/diagnostics.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython/environment.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython/exe_builder.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython/frontend.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython/hir.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython/importer.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython/package_manager.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython/phonetics.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython/runtime.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython/runtime_manager.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython/translator.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython/updater.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython/vm.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython/vocabulary.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython_lang.egg-info/SOURCES.txt +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython_lang.egg-info/dependency_links.txt +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython_lang.egg-info/entry_points.txt +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython_lang.egg-info/requires.txt +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/src/hython_lang.egg-info/top_level.txt +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_advanced_functions.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_annotations.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_assignment_semantics.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_async.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_build_cli.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_cli_diagnostics.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_closures.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_compiler.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_compiler_manager.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_comprehensions.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_control_imports.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_diagnostics.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_exe_builder.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_frontend.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_fstrings.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_generators.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_hir.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_importer.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_loop_control.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_loop_else.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_name_errors.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_native_builtins.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_native_classes.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_native_exceptions.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_native_features.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_native_modules.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_package_manager.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_patterns_expressions.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_phonetics.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_python314_semantic_matrix.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_python314_syntax_matrix.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_runtime.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_runtime_manager.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_stability.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_translator.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_unpacking.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_updater.py +0 -0
- {hython_lang-2.0.0 → hython_lang-2.0.1}/tests/test_with_lambda.py +0 -0
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: hython-lang
|
|
3
|
+
Version: 2.0.1
|
|
4
|
+
Summary: Python, pronounced in Hangul
|
|
5
|
+
Author: Hython contributors
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Keywords: python,korean,esoteric-language,compiler,virtual-machine
|
|
8
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
9
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
10
|
+
Classifier: Topic :: Software Development :: Compilers
|
|
11
|
+
Requires-Python: >=3.14
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
License-File: LICENSE
|
|
14
|
+
Provides-Extra: exe
|
|
15
|
+
Requires-Dist: pyinstaller>=6.16; extra == "exe"
|
|
16
|
+
Provides-Extra: native
|
|
17
|
+
Requires-Dist: nuitka>=2.8; extra == "native"
|
|
18
|
+
Requires-Dist: ordered-set>=4.1; extra == "native"
|
|
19
|
+
Requires-Dist: zstandard>=0.23; extra == "native"
|
|
20
|
+
Provides-Extra: publish
|
|
21
|
+
Requires-Dist: build>=1.3; extra == "publish"
|
|
22
|
+
Requires-Dist: twine>=6.2; extra == "publish"
|
|
23
|
+
Dynamic: license-file
|
|
24
|
+
|
|
25
|
+
# 하이썬 (Hython)
|
|
26
|
+
|
|
27
|
+
[](https://pypi.org/project/hython-lang/)
|
|
28
|
+
[](https://pypi.org/project/hython-lang/)
|
|
29
|
+
[](LICENSE)
|
|
30
|
+
[](CHANGELOG.md)
|
|
31
|
+
|
|
32
|
+
> Python, pronounced in Hangul.
|
|
33
|
+
|
|
34
|
+
하이썬은 Python의 의미를 번역하는 대신 영어 발음을 한글로 적는 난해한 프로그래밍
|
|
35
|
+
언어입니다. Python 호환 실행기와 독립 HBC 컴파일러·가상 머신을 함께 제공합니다.
|
|
36
|
+
|
|
37
|
+
```hython
|
|
38
|
+
데프 인사(이름):
|
|
39
|
+
프린트(에프"안녕, {이름}!")
|
|
40
|
+
|
|
41
|
+
포 번호 인 레인지(3):
|
|
42
|
+
인사(에프"하이썬 {번호}")
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 빠른 설치
|
|
46
|
+
|
|
47
|
+
Python 3.14 이상이 필요합니다.
|
|
48
|
+
|
|
49
|
+
```console
|
|
50
|
+
py -3.14 -m pip install hython-lang
|
|
51
|
+
hython --version
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
현재 공개 버전은 [PyPI의 `hython-lang`](https://pypi.org/project/hython-lang/)에서
|
|
55
|
+
설치할 수 있습니다.
|
|
56
|
+
|
|
57
|
+
## 첫 실행
|
|
58
|
+
|
|
59
|
+
`안녕.hy` 파일을 만듭니다.
|
|
60
|
+
|
|
61
|
+
```hython
|
|
62
|
+
이름 = "하이썬"
|
|
63
|
+
프린트(에프"안녕, {이름}!")
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
실행합니다.
|
|
67
|
+
|
|
68
|
+
```console
|
|
69
|
+
hython 소스실행 안녕.hy
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
영어 명령도 동일하게 지원합니다.
|
|
73
|
+
|
|
74
|
+
```console
|
|
75
|
+
hython run 안녕.hy
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## 주요 특징
|
|
79
|
+
|
|
80
|
+
- Python 키워드와 내장 함수의 한글 발음형 문법
|
|
81
|
+
- Python 3.14 호환 실행 모드
|
|
82
|
+
- 하이썬 전용 AST, HIR, HBC 바이트코드와 가상 머신
|
|
83
|
+
- `.pyc` 및 CPython opcode와 다른 독립 HBC 형식
|
|
84
|
+
- 한글 오류 메시지와 traceback
|
|
85
|
+
- 표준 라이브러리 및 설치 패키지 공개 API 발음 사전
|
|
86
|
+
- 패키지 설치·업데이트·제거와 문법 사전 자동 동기화
|
|
87
|
+
- Python 파일의 완전 한글 변환과 영어 식별자 감사
|
|
88
|
+
- HBC 프로그램의 독립 Windows EXE 빌드
|
|
89
|
+
- Nuitka/MSVC 기반 C 변환 하이썬 실행 파일
|
|
90
|
+
- HBC 컴파일러 검증·업데이트·롤백
|
|
91
|
+
|
|
92
|
+
## 문법 예시
|
|
93
|
+
|
|
94
|
+
### 조건과 반복
|
|
95
|
+
|
|
96
|
+
```hython
|
|
97
|
+
합계 = 0
|
|
98
|
+
|
|
99
|
+
포 숫자 인 레인지(10):
|
|
100
|
+
이프 숫자 % 2 == 0:
|
|
101
|
+
합계 += 숫자
|
|
102
|
+
|
|
103
|
+
프린트(합계)
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### 함수와 클래스
|
|
107
|
+
|
|
108
|
+
```hython
|
|
109
|
+
클래스 사람:
|
|
110
|
+
데프 __이니트__(셀프, 이름):
|
|
111
|
+
셀프.이름 = 이름
|
|
112
|
+
|
|
113
|
+
데프 인사(셀프):
|
|
114
|
+
리턴 에프"안녕하세요, {셀프.이름}입니다."
|
|
115
|
+
|
|
116
|
+
사용자 = 사람("하이썬")
|
|
117
|
+
프린트(사용자.인사())
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### 예외 처리
|
|
121
|
+
|
|
122
|
+
```hython
|
|
123
|
+
트라이:
|
|
124
|
+
값 = 인트(인풋("숫자: "))
|
|
125
|
+
프린트(10 / 값)
|
|
126
|
+
익셉트 밸류에러:
|
|
127
|
+
프린트("숫자를 입력해야 합니다.")
|
|
128
|
+
익셉트 제로디비전에러:
|
|
129
|
+
프린트("0으로 나눌 수 없습니다.")
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### 모듈
|
|
133
|
+
|
|
134
|
+
```hython
|
|
135
|
+
인폴트 제이슨
|
|
136
|
+
|
|
137
|
+
자료 = 제이슨.로드스('{"값": 42}')
|
|
138
|
+
프린트(자료["값"])
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
설치·동기화된 발음 사전에 따라 실제 모듈 철자가 달라질 수 있습니다. 생성된 사전은
|
|
142
|
+
`~/.hython/dictionaries`에서 확인하고 수정할 수 있습니다.
|
|
143
|
+
|
|
144
|
+
### Tkinter
|
|
145
|
+
|
|
146
|
+
Tkinter는 pip 패키지가 아니라 Python의 Tcl/Tk 구성 요소입니다. Tcl/Tk가 포함된 공식
|
|
147
|
+
Python 환경에서는 다음처럼 영어 API 없이 작성할 수 있습니다.
|
|
148
|
+
|
|
149
|
+
```hython
|
|
150
|
+
인폴트 티킨터 애즈 티케이
|
|
151
|
+
|
|
152
|
+
창 = 티케이.티케이()
|
|
153
|
+
창.타이틀("하이썬")
|
|
154
|
+
창.지오메트리("500x300")
|
|
155
|
+
창.메인루프()
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## 문자열 접두사
|
|
159
|
+
|
|
160
|
+
문자열 접두사도 한글로 쓸 수 있습니다.
|
|
161
|
+
|
|
162
|
+
| Python | 하이썬 |
|
|
163
|
+
|---|---|
|
|
164
|
+
| `f"..."` | `에프"..."` |
|
|
165
|
+
| `r"..."` | `알"..."` |
|
|
166
|
+
| `b"..."` | `비"..."` |
|
|
167
|
+
| `u"..."` | `유"..."` |
|
|
168
|
+
| `rf"..."` | `알에프"..."` |
|
|
169
|
+
|
|
170
|
+
문자열 내용, URL, 실제 파일 경로와 환경 변수명은 외부 시스템에 전달되는 데이터이므로
|
|
171
|
+
원문을 보존합니다.
|
|
172
|
+
|
|
173
|
+
## 명령어
|
|
174
|
+
|
|
175
|
+
영어 명령과 한글 별칭을 함께 제공합니다.
|
|
176
|
+
|
|
177
|
+
| 기능 | 한글 명령 | 영어 명령 |
|
|
178
|
+
|---|---|---|
|
|
179
|
+
| 소스 실행 | `hython 소스실행 파일.hy` | `hython run 파일.hy` |
|
|
180
|
+
| 대화형 실행 | `hython 대화` | `hython repl` |
|
|
181
|
+
| HBC 컴파일 | `hython 컴파일 파일.hy` | `hython compile 파일.hy` |
|
|
182
|
+
| HBC 실행 | `hython 바이트실행 파일.hbc` | `hython execute 파일.hbc` |
|
|
183
|
+
| 프로젝트 빌드 | `hython 빌드 .` | `hython build .` |
|
|
184
|
+
| EXE 생성 | `hython 실행파일 파일.hbc` | `hython exe 파일.hbc` |
|
|
185
|
+
| 영어 감사 | `hython 감사 .` | `hython audit .` |
|
|
186
|
+
| 업데이트 | `hython 업데이트` | `hython update` |
|
|
187
|
+
| 환경 진단 | `hython 진단` | `hython doctor` |
|
|
188
|
+
|
|
189
|
+
전체 도움말:
|
|
190
|
+
|
|
191
|
+
```console
|
|
192
|
+
hython --help
|
|
193
|
+
hython 명령 --help
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## Python 코드 변환
|
|
197
|
+
|
|
198
|
+
일반 Python 파일을 하이썬으로 변환합니다.
|
|
199
|
+
|
|
200
|
+
```console
|
|
201
|
+
hython 변환 program.py --reverse -o program.hy
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
사용자 식별자와 문자열 접두사까지 한글화합니다.
|
|
205
|
+
|
|
206
|
+
```console
|
|
207
|
+
hython 변환 program.py --reverse --complete -o 완전한글.hy
|
|
208
|
+
hython 감사 완전한글.hy
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
하이썬을 Python으로 되돌릴 수도 있습니다.
|
|
212
|
+
|
|
213
|
+
```console
|
|
214
|
+
hython 변환 program.hy -o program.py
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## 패키지 관리
|
|
218
|
+
|
|
219
|
+
패키지를 설치하면 배포판의 import 모듈을 찾고 Python 소스와 공개 런타임 API를 분석해
|
|
220
|
+
발음 사전을 생성합니다.
|
|
221
|
+
|
|
222
|
+
```console
|
|
223
|
+
hython 패키지 설치 requests
|
|
224
|
+
hython 패키지 설치 beautifulsoup4
|
|
225
|
+
hython 패키지 제거 requests
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
설치된 모듈을 다시 분석합니다.
|
|
229
|
+
|
|
230
|
+
```console
|
|
231
|
+
hython 패키지 분석 requests
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
신뢰하지 않는 모듈은 실행 없는 정적 분석만 사용할 수 있습니다.
|
|
235
|
+
|
|
236
|
+
```console
|
|
237
|
+
hython 패키지 분석 모듈명 --static
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## Python 런타임 업데이트
|
|
241
|
+
|
|
242
|
+
```console
|
|
243
|
+
hython 초기화
|
|
244
|
+
hython 업데이트
|
|
245
|
+
hython 업데이트 --no-runtime
|
|
246
|
+
hython 런타임 정보
|
|
247
|
+
hython 런타임 동기화
|
|
248
|
+
hython 런타임 검사 .
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
`업데이트`는 Windows의 공식 Python install manager를 통해 런타임을 갱신하고, 새
|
|
252
|
+
Python의 문법 프로필·표준 라이브러리·설치 패키지 발음 사전을 재생성합니다.
|
|
253
|
+
|
|
254
|
+
Python 호환 실행 모드는 활성 Python이 지원하는 문법을 바로 사용합니다. 새로운 문법을
|
|
255
|
+
독립 HBC 명령으로 변환하려면 해당 문법을 지원하는 HBC 컴파일러 릴리스가 필요합니다.
|
|
256
|
+
|
|
257
|
+
## HBC 컴파일러와 VM
|
|
258
|
+
|
|
259
|
+
```console
|
|
260
|
+
hython 컴파일 examples\컴파일.hy -o 프로그램.hbc
|
|
261
|
+
hython 바이트실행 프로그램.hbc
|
|
262
|
+
hython 해체 프로그램.hbc
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
HBC는 `HYBC` 헤더, 자체 스택 명령어, 압축 페이로드와 SHA-256 무결성 검사를
|
|
266
|
+
사용합니다. 원본 `.hy` 파일이나 CPython `.pyc` 없이 Hython VM에서 실행됩니다.
|
|
267
|
+
|
|
268
|
+
### 프로젝트 빌드
|
|
269
|
+
|
|
270
|
+
```console
|
|
271
|
+
hython 빌드 프로젝트 -o dist
|
|
272
|
+
hython 바이트실행 dist\main.hbc
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### Windows EXE
|
|
276
|
+
|
|
277
|
+
EXE 빌드 기능을 설치합니다.
|
|
278
|
+
|
|
279
|
+
```console
|
|
280
|
+
py -3.14 -m pip install "hython-lang[exe]"
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
HBC를 독립 실행 파일로 만듭니다.
|
|
284
|
+
|
|
285
|
+
```console
|
|
286
|
+
hython 실행파일 프로그램.hbc -o 프로그램.exe
|
|
287
|
+
hython 실행파일 프로그램.hbc -o 프로그램.exe --windowed --icon app.ico
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
## 소스에서 개발
|
|
291
|
+
|
|
292
|
+
저장소를 받은 뒤 개발 모드로 설치합니다.
|
|
293
|
+
|
|
294
|
+
```console
|
|
295
|
+
py -3.14 -m pip install -e ".[exe,native,publish]"
|
|
296
|
+
py -3.14 -m unittest discover -s tests -q
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
현재 테스트 수와 최신 변경 사항은 [CHANGELOG.md](CHANGELOG.md)에서 확인할 수 있습니다.
|
|
300
|
+
|
|
301
|
+
## C 기반 하이썬 실행 파일 빌드
|
|
302
|
+
|
|
303
|
+
Windows에서 다음 도구가 필요합니다.
|
|
304
|
+
|
|
305
|
+
- Python 3.14
|
|
306
|
+
- Visual Studio 또는 Build Tools의 MSVC C/C++ 도구
|
|
307
|
+
- Nuitka
|
|
308
|
+
|
|
309
|
+
```console
|
|
310
|
+
build-hython.bat
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
빌드 과정:
|
|
314
|
+
|
|
315
|
+
```text
|
|
316
|
+
전체 회귀 테스트
|
|
317
|
+
→ Nuitka C 소스 생성
|
|
318
|
+
→ MSVC 컴파일 및 링크
|
|
319
|
+
→ release\hython.exe 생성
|
|
320
|
+
→ HBC smoke test
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
생성 파일:
|
|
324
|
+
|
|
325
|
+
```text
|
|
326
|
+
release\hython.exe
|
|
327
|
+
release\hython.exe.sha256
|
|
328
|
+
release\hython-native-report.xml
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
## Windows 설치 프로그램
|
|
332
|
+
|
|
333
|
+
WiX가 설치된 환경에서 MSI를 생성합니다.
|
|
334
|
+
|
|
335
|
+
```console
|
|
336
|
+
build-installer.bat
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
MSI는 Program Files 설치, 시스템 PATH, 시작 메뉴 바로가기와 Windows 제거·업그레이드를
|
|
340
|
+
지원합니다.
|
|
341
|
+
|
|
342
|
+
## PyPI 배포
|
|
343
|
+
|
|
344
|
+
배포 파일만 생성하고 검증합니다.
|
|
345
|
+
|
|
346
|
+
```console
|
|
347
|
+
publish-pypi.bat
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
TestPyPI 또는 실제 PyPI에 게시합니다.
|
|
351
|
+
|
|
352
|
+
```console
|
|
353
|
+
publish-pypi.bat testpypi
|
|
354
|
+
publish-pypi.bat pypi
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
PyPI 버전은 재사용할 수 없습니다. 공개 후 수정판은 `2.0.1`, `2.0.2`처럼 새 버전으로
|
|
358
|
+
게시해야 합니다.
|
|
359
|
+
|
|
360
|
+
## 프로젝트 구조
|
|
361
|
+
|
|
362
|
+
```text
|
|
363
|
+
src/hython/ 하이썬 실행기·컴파일러·VM
|
|
364
|
+
tests/ 회귀 및 호환성 테스트
|
|
365
|
+
examples/ 하이썬 예제
|
|
366
|
+
docs/ 언어와 컴파일러 문서
|
|
367
|
+
scripts/ 빌드·검증·배포 도구
|
|
368
|
+
installer/ Windows MSI 정의
|
|
369
|
+
assets/ 아이콘과 이미지
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
## 기여
|
|
373
|
+
|
|
374
|
+
버그 제보와 기능 제안은 GitHub Issues를 이용해 주세요. 변경을 제안할 때는 다음을
|
|
375
|
+
확인해 주세요.
|
|
376
|
+
|
|
377
|
+
1. 기존 테스트가 모두 통과하는지 확인합니다.
|
|
378
|
+
2. 변경한 동작의 회귀 테스트를 추가합니다.
|
|
379
|
+
3. 사용자에게 보이는 오류와 도움말은 가능한 한 한국어로 작성합니다.
|
|
380
|
+
4. 공개 API 또는 문법 변경은 `CHANGELOG.md`에 기록합니다.
|
|
381
|
+
|
|
382
|
+
## 보안
|
|
383
|
+
|
|
384
|
+
취약점은 공개 Issue보다 [SECURITY.md](SECURITY.md)의 절차를 따라 비공개로 제보해
|
|
385
|
+
주세요. PyPI 토큰, 인증서 암호와 개인 키를 Issue·커밋·로그에 포함하지 마세요.
|
|
386
|
+
|
|
387
|
+
## 라이선스
|
|
388
|
+
|
|
389
|
+
하이썬은 [MIT License](LICENSE)로 배포됩니다.
|