vladx 1.0.0 → 1.2.0

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.
package/README.md CHANGED
@@ -4,14 +4,11 @@
4
4
 
5
5
  ## Особенности
6
6
 
7
- - 🚀 Высокая производительность с JIT компиляцией
8
- - 🔒 Безопасность с изоляцией песочницы
9
- - 🏗️ Расширенная система типов
10
- - ⚡ Мощная асинхронность
11
- - 🧩 Современная модульная система
12
- - 🧪 Встроенная поддержка тестирования
13
- - 🔬 Отладчик и профилировщик
14
- - 📦 Управление пакетами через vladpm
7
+ - 🚀 Высокая производительность
8
+ - 🔒 Безопасность
9
+ - 🏗️ Система типов
10
+ - ⚡ Асинхронность
11
+ - 🧩 Модульная система
15
12
 
16
13
  ## Установка
17
14
 
@@ -19,238 +16,13 @@
19
16
  npm install -g vladx
20
17
  ```
21
18
 
22
- ## Использование
23
-
24
- ### Базовый пример
19
+ ## Быстрый старт
25
20
 
26
21
  ```vlad
27
- пусть x = 10 + 5;
22
+ пусть x = 10;
28
23
  печать("Результат:", x);
29
24
  ```
30
25
 
31
- ### Функции
32
-
33
- ```vlad
34
- функция добавить(a, b) {
35
- вернуть a + b;
36
- }
37
-
38
- печать("5 + 3 =", добавить(5, 3));
39
- ```
40
-
41
- ### Условия
42
-
43
- ```vlad
44
- пусть возраст = 18;
45
-
46
- если (возраст >= 18) {
47
- печать("Совершеннолетний");
48
- } иначе {
49
- печать("Несовершеннолетний");
50
- }
51
- ```
52
-
53
- ### Циклы
54
-
55
- ```vlad
56
- пока (возраст < 21) {
57
- печать("Возраст:", возраст);
58
- возраст = возраст + 1;
59
- }
60
-
61
- для (пусть i = 0; i < 5; i = i + 1) {
62
- печать("Итерация:", i);
63
- }
64
- ```
65
-
66
- ### Асинхронность
67
-
68
- ```vlad
69
- асинхронная функция fetchData() {
70
- позволить ждать(1000);
71
- вернуть "данные";
72
- }
73
-
74
- пусть данные = ждать fetchData();
75
- печать("Данные:", данные);
76
- ```
77
-
78
- ### Функциональное программирование
79
-
80
- ```vlad
81
- пусть удвоить = (x) => x * 2;
82
- пусть утроить = (x) => x * 3;
83
-
84
- пусть составить = композиция(удвоить, утроить);
85
- печать("Составить(5) =", составить(5));
86
- ```
87
-
88
- ### Структуры данных
89
-
90
- ```vlad
91
- пусть стек = Стек();
92
- стек.пуш(1);
93
- стек.пуш(2);
94
- печать("Pop:", стек.pop());
95
-
96
- пусть очередь = Очередь();
97
- очередь.enqueue(1);
98
- печать("Dequeue:", очередь.dequeue());
99
- ```
100
-
101
- ## Встроенные функции
102
-
103
- ### Математика
104
-
105
- - `максимум(...)` - максимум
106
- - `минимум(...)` - минимум
107
- - `случайный()` - случайное число [0, 1]
108
- - `случайноеЦелое(min, max)` - случайное целое
109
- - `abs(n)` - модуль
110
- - `округлить(n)` - округление
111
- - `корень(n)` - квадратный корень
112
- - `пи()` - число π
113
-
114
- ### Строки
115
-
116
- - `длина(str)` - длина строки
117
- - `нижнийРегистр(str)` - нижний регистр
118
- - `верхнийРегистр(str)` - верхний регистр
119
- - `обрезка(str)` - обрезать пробелы
120
- - `заменить(str, old, new)` - замена
121
- - `разделить(str, delimiter)` - разделение
122
-
123
- ### Массивы
124
-
125
- - `создатьМассив(...)` - создать массив
126
- - `объединить(...arrays)` - объединение
127
- - `фильтр(arr, callback)` - фильтрация
128
- - `отобразить(arr, callback)` - map
129
- - `уменьшить(arr, callback, initial)` - reduce
130
-
131
- ### Объекты
132
-
133
- - `объект(obj)` - создать объект
134
- - `ключи(obj)` - ключи
135
- - `значения(obj)` - значения
136
- - `пары(obj)` - пары
137
- - `слить(...objects)` - слияние
138
-
139
- ### Система
140
-
141
- - `печать(...)` - вывод с новой строкой
142
- - `вывод(...)` - вывод без новой строки
143
- - `время()` - текущее время
144
- - `дата()` - текущая дата
145
-
146
- ### Файлы
147
-
148
- - `файлЧитать(path)` - прочитать файл
149
- - `файлЗаписать(path, content)` - записать файл
150
- - `файлСуществует(path)` - проверка существования
151
-
152
- ### Кэш
153
-
154
- - `кэшУстановить(key, value)` - установить в кэш
155
- - `кэшПолучить(key)` - получить из кэша
156
- - `кэшУдалить(key)` - удалить из кэша
157
- - `кэшОчистить()` - очистить кэш
158
- - `кэшСтатистика()` - статистика кэша
159
-
160
- ### Функциональное программирование
161
-
162
- - `каррировать(fn)` - каррирование
163
- - `композиция(...fns)` - композиция
164
- - `труба(...fns)` - pipe
165
- - `мемоизировать(fn)` - мемоизация
166
- - `частично(fn, ...args)` - частичное применение
167
-
168
- ### Структуры данных
169
-
170
- - `Стек()` - создать стек
171
- - `Очередь()` - создать очередь
172
- - `СвязныйСписок()` - создать связный список
173
- - `ПриоритетнаяОчередь(comparator)` - приоритетная очередь
174
- - `Множество()` - создать множество
175
- - `Карта()` - создать карту
176
- - `Дерево()` - создать trie
177
- - `БинарноеДерево(compareFn)` - бинарное дерево поиска
178
-
179
- ### Асинхронность
180
-
181
- - `параллельно(tasks)` - параллельное выполнение
182
- - `последовательно(tasks)` - последовательное выполнение
183
- - `гонка(tasks)` - race
184
- - `всеSettled(tasks)` - allSettled
185
- - `любой(tasks)` - any
186
-
187
- ## CLI
188
-
189
- ```bash
190
- # Выполнить файл
191
- vladx run main.vx
192
-
193
- # REPL режим
194
- vladx repl
195
-
196
- # Компилировать в JavaScript
197
- vladx compile main.vx --output main.js
198
-
199
- # Линтинг
200
- vladx lint src/
201
- vladx lint main.vx --fix
202
-
203
- # Форматирование
204
- vladx format src/
205
- vladx format main.vx --indent 2
206
-
207
- # Тесты
208
- vladx test
209
- vladx test tests/
210
-
211
- # Сборка модулей
212
- vladx bundle main.vx --format iife --minify
213
-
214
- # Watch режим
215
- vladx watch main.vx
216
-
217
- # Отладка
218
- vladx debug main.vx
219
- ```
220
-
221
- ## Менеджер пакетов (vladpm)
222
-
223
- ```bash
224
- # Инициализация проекта
225
- vladpm init
226
-
227
- # Установка пакета
228
- vladpm установить пакет
229
- vladpm установить пакет@1.0.0
230
-
231
- # Глобальная установка
232
- vladpm установить -g пакет
233
-
234
- # Удаление пакета
235
- vladpm удалить пакет
236
-
237
- # Обновление пакетов
238
- vladpm обновить
239
-
240
- # Поиск пакетов
241
- vladpm поиск пакет
242
-
243
- # Информация о пакете
244
- vladpm информация пакет
245
-
246
- # Список пакетов
247
- vladpm список
248
-
249
- # Публикация
250
- vladpm опубликовать
251
- ```
252
-
253
26
  ## Лицензия
254
27
 
255
28
  MIT
256
-
package/bin/vladx.js CHANGED
@@ -38,7 +38,7 @@ export class CLI {
38
38
  /**
39
39
  * Запуск CLI
40
40
  */
41
- async run(argv) {
41
+ async start(argv) {
42
42
  const command = argv[2];
43
43
  const args = argv.slice(3);
44
44
 
@@ -61,19 +61,14 @@ export class CLI {
61
61
  * Выполнить файл
62
62
  */
63
63
  async run(args) {
64
- if (args.length === 0) {
65
- logger.error('Укажите файл для выполнения');
66
- return;
67
- }
68
-
69
64
  const filepath = resolve(args[0]);
70
- const options = this.parseOptions(args.slice(1));
71
65
 
72
66
  if (!existsSync(filepath)) {
73
67
  throw new Error(`Файл не найден: ${filepath}`);
74
68
  }
75
69
 
76
- const startTime = Date.now();
70
+ const options = this.parseOptions(args.slice(1));
71
+
77
72
  this.engine = new VladXEngine({
78
73
  debug: options.debug || false,
79
74
  strictMode: options.strict || false,
@@ -96,7 +91,7 @@ export class CLI {
96
91
 
97
92
  process.exit(0);
98
93
  } catch (error) {
99
- logger.error(error.message);
94
+ logger.error(error.message || error.value || 'Unknown error');
100
95
  process.exit(1);
101
96
  }
102
97
  }
@@ -485,7 +480,7 @@ VladX - Мощный интерпретируемый язык программ
485
480
  */
486
481
  if (import.meta.url === `file://${process.argv[1]}`) {
487
482
  const cli = new CLI();
488
- cli.run(process.argv);
483
+ cli.start(process.argv);
489
484
  }
490
485
 
491
486
  export default CLI;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vladx",
3
- "version": "1.0.0",
3
+ "version": "1.2.0",
4
4
  "description": "Мощный интерпретируемый язык программирования с русским синтаксисом",
5
5
  "main": "src/index.js",
6
6
  "bin": {
@@ -56,6 +56,8 @@ export class VladXEngine {
56
56
 
57
57
  this.registerBuiltins();
58
58
  this.registerAdvancedBuiltins();
59
+ // Now register the built-ins in the interpreter's environment
60
+ this.interpreter.refreshBuiltins();
59
61
  }
60
62
 
61
63
  /**