Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
3a6e470
Добавлен параметр завершения дочерних процессов в метод Завершить()
yukon39 Feb 24, 2026
82af84a
fix #1468 #6 #1329: Реализация оператора Перейти / Goto в компилятор…
Apr 8, 2026
4f4ebff
refactor: Рефакторинг Goto \ Перейти по замечаниям
Apr 9, 2026
fa0d7dd
Merge pull request #1665 from Diversus23/develop
EvilBeaver Apr 20, 2026
49387e2
Бамп версии и убрал rc из номера версии
EvilBeaver Apr 20, 2026
9490621
fix(text-read): remove legacy constructor defaults
johnnyshut Apr 28, 2026
ce3e465
test(text-read): update compatibility expectations for default params
johnnyshut Apr 28, 2026
f8af9ef
docs: актуализация документации проекта под .NET 8 и фактическую стру…
johnnyshut Apr 29, 2026
c455964
Merge pull request #1669 from johnnyshut/docs/update-202604
EvilBeaver Apr 30, 2026
a7f38e3
feat(binary): вынесли порог памяти для ДвоичныеДанные в конфигурацию
johnnyshut Apr 30, 2026
97f8bb7
docs: обновление раздела установки для Linux в README.md и README-EN.…
johnnyshut Apr 30, 2026
2c90bbf
refactor(BslProcess): Оптимизация уведомлений исполнителя и улучшение…
johnnyshut Apr 30, 2026
8c22202
docs: обновление заголовков в README.md и README-EN.md для разделов о…
johnnyshut Apr 30, 2026
126d144
test(text-write): update expected line count in text reading test
johnnyshut May 1, 2026
264d7d3
Fix #1673: Проброс процесса при native-компиляции.
dmpas May 5, 2026
4806a16
#1673: Тесты на вызов методов с bsl-процессом.
dmpas May 6, 2026
f9975ad
#1673: Проброс процесса в вызов функции.
dmpas May 6, 2026
391fe93
#1673: Тесты.
dmpas May 7, 2026
24f4eba
#1673: Тесты на превышение количества параметров.
dmpas May 7, 2026
59f99f1
#1673: Обработка превышения количества параметров.
dmpas May 7, 2026
0ae2a9d
Неверно был указан тип преобразования для Даты.
dmpas May 9, 2026
5e4eb92
Учтена среда запуска тестов.
dmpas May 9, 2026
3113d1f
Обновляем настройки системы при падении теста config.
dmpas May 9, 2026
c1e23bb
Merge pull request #1677 from dmpas/feature/config-test-cleanup
EvilBeaver May 12, 2026
ab28abd
Merge pull request #1676 from dmpas/feature/direct-date-cast-native
EvilBeaver May 12, 2026
a541e3e
Merge pull request #1671 from johnnyshut/docs/1437
EvilBeaver May 12, 2026
777fac1
fix #1679: добавлен метод ОткрытьПоток() объекта ЧтениеJSON
Mr-Rm May 13, 2026
0297f46
использован общий интерфейс Потоков
Mr-Rm May 13, 2026
0ca87f7
сохранять поток при закрытии чтения; убрана ненужная проверка
Mr-Rm May 14, 2026
021d90f
null-safety; some cleanup; fix test
Mr-Rm May 14, 2026
d201b54
fix #1679: добавлен метод ОткрытьПоток() объекта ЧтениеJSON
EvilBeaver May 15, 2026
2cecba6
fix #1681
leemuar May 16, 2026
8efa13e
Добавлены тесты на поведение ЧтениеJSON и ПрочитатьJSON
leemuar May 16, 2026
5400325
Добавлены тесты, проверяющие работу чтения с помощью ОткрытьПоток() и…
leemuar May 16, 2026
4c9ee3c
удалена лишняя проверка
leemuar May 16, 2026
3a71ca0
Перенес параметры работы парсера JsonReaderInternal в конструктор
leemuar May 16, 2026
ced6663
Исправлен тест, добавлена проверка на совпадение размеров массивов
leemuar May 16, 2026
43c3809
Исправлены ошибки в тестах
leemuar May 16, 2026
ae3651f
feat(binary): добавление поддержки конфигурации лимита памяти для дво…
johnnyshut May 18, 2026
379256c
Исправлены ошибки в тестах
leemuar May 18, 2026
23221a1
Исправил хеш-суммы тестов чтения json
leemuar May 19, 2026
2b1e0e6
fix(oscript.cfg): добавлен недостающий перевод строки в конфигурацию …
johnnyshut May 20, 2026
27a89b6
refactor(binary): обновление ключей конфигурации лимита памяти для дв…
johnnyshut May 20, 2026
5ad4bfb
fix #1683: инкрементальное ХешированиеДанных без захвата файлов
Mr-Rm May 20, 2026
1a2ad44
был баг в итерации по массиву в Crc32
Mr-Rm May 20, 2026
0217082
по замечаниям: контроль null, отрицательный счетчик, закрытие потока
Mr-Rm May 20, 2026
40d80cb
Рефакторинг
EvilBeaver May 21, 2026
6451163
инициализация хешей для пустых данных; тесты добавлены и исправлены
Mr-Rm May 21, 2026
15b12eb
Dispose хеш-провайдера и мелочи
Mr-Rm May 21, 2026
ce76a41
обработка параметра Количество (совместимо)
Mr-Rm May 22, 2026
d29b7ec
добавлены описания
Mr-Rm May 22, 2026
4ade77d
Merge pull request #1682 from leemuar/fix-readerjson-date-parsing
EvilBeaver May 23, 2026
40bc661
fix(BinaryDataOptions, BslProcess): исправлены комментарии лицензии д…
johnnyshut May 23, 2026
d018b18
Merge pull request #1684 from Mr-Rm/v2/fix-1683
EvilBeaver May 24, 2026
3e487c9
refactor(BslProcess): Упрощение логики уведомлений исполнителей
johnnyshut May 24, 2026
19a504d
Merge pull request #1670 from johnnyshut/fix/1667
EvilBeaver May 25, 2026
dc2c920
Merge pull request #1668 from johnnyshut/bugfix/1179
EvilBeaver May 25, 2026
6ac9e8c
Merge pull request #1674 from EvilBeaver/feature/issue-1673-native-co…
EvilBeaver May 25, 2026
a731728
Документировал IHostApplication
EvilBeaver May 26, 2026
63ae1a1
fixed #1678 Свойство СистемнаяИнформация.ПолнаяКоманднаяСтрока
EvilBeaver May 26, 2026
17dae14
Merge pull request #1660 from yukon39/issue-1659 Closes #1659
EvilBeaver May 26, 2026
342a790
fix #1675: возвращаемый тип ЗагрузитьСценарий() и обработка ошибок
Mr-Rm May 26, 2026
538ff04
выделена функция создания внешних данных; одинаковая обработка исключ…
Mr-Rm May 26, 2026
9d10d7d
опечатки в описаниях
Mr-Rm May 26, 2026
3c3984c
Merge pull request #1686 from Mr-Rm/v2/fix-1675
EvilBeaver May 26, 2026
de17102
fix #1685: обработка ошибок в теле модуля
Mr-Rm May 26, 2026
e089086
Merge pull request #1688 from Mr-Rm/v2/fix-1685
EvilBeaver May 27, 2026
7cb7250
исправлен падающий тест
Mr-Rm May 27, 2026
c0c999a
Merge pull request #1689 from Mr-Rm/fix-doctest
EvilBeaver May 27, 2026
fb90e9c
использовать версию C# в соответствии с фреймворком
Mr-Rm May 26, 2026
a2d15bd
убраны явные указания версии; изменено правило cursor
Mr-Rm May 27, 2026
94f66ea
Merge pull request #1687 from Mr-Rm/feat/LangVersion
EvilBeaver May 27, 2026
a66bafe
Скилл для создания release-notes
EvilBeaver May 28, 2026
d617881
release-notes версии 2.1
EvilBeaver May 28, 2026
e8b6ccf
fix(docs): исправить опечатки в xml-doc комментариях StandardLibrary
nixel2007 May 30, 2026
4bc8829
fix(docs): опечатка в xml-doc ConsoleContext
nixel2007 May 30, 2026
4f06259
ошибка в сложении с датой
Mr-Rm May 31, 2026
7f3a4dc
вычитание из даты с приведением типа
Mr-Rm May 31, 2026
09a5044
рефакторинг мелкий
Mr-Rm May 31, 2026
4cbc198
Merge pull request #1691 from nixel2007/fix/xmldoc-typos
EvilBeaver Jun 1, 2026
273f857
Merge pull request #1692 from Mr-Rm/v2/native/fix-dynamic
EvilBeaver Jun 1, 2026
990a284
Дополнил release-notes
EvilBeaver Jun 1, 2026
109564d
Merge branch 'develop' of https://github.com/EvilBeaver/OneScript int…
EvilBeaver Jun 1, 2026
67a1782
Merge branch 'develop' into publish/2.1.0
EvilBeaver Jun 1, 2026
ca93912
Исправлено несколько замечаний Сонара
EvilBeaver Jun 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .cursor/rules/langversion.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@
alwaysApply: true
---

Проект использует .net 8.0 и LangVersion 8, поэтому при генерации кода не используй языковые фичи C#, которые отсутствуют в C# 8.
Проект VSCode.DebugAdapter использует net framework 4.8, поэтому при генерации кода для него не используй языковые фичи C#, которые отсутствуют в C# 7.3.
Остальные проекты используют .net 8, можно применять C# 12.
49 changes: 49 additions & 0 deletions .cursor/skills/release-notes/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
---
name: release-notes
description: This skill creates release notes for new release by reading git commit log. Use it only when explicitly specified
---

# Release notes

Когда нужно выпустить новый релиз, в репозитории нужно изменить файл install/release-notes.md (путь относительно корня репозитория)

Для того, чтобы собрать данные, нужно использовать git log и вызвать команду

```bat
set LC_ALL=C.UTF-8
set TAGNAME=%1

git --no-pager log --pretty="* %%s" --no-merges %TAGNAME%..HEAD
```

где переменная TAGNAME должна быть git-тэгом предыдущего релиза. Результатом выполнения команды будут тексты коммитов, между TAGNAME и текущим состоянием ветки.

Ты должен запросить у пользователя тег предыдущей версии, либо пользователь тебе сообщит его в промпте сразу.

Далее, ты должен прочитать тексты коммитов, в них могут встречаться ссылки на github issues в виде указания номера задачи через решетку, например вот так:

`fixes #1234 bla-bla-bla`

Текст коммита также может не содержать упоминания задачи, или быть вовсе техническим/промежуточным коммитом, который в release notes попадать не должен, т.к. не описывает конечное изменение.

Твоя задача и цель - взять тексты коммитов и вывести из них изменения в версии, которые будут включены в файл install/release-notes.md.

Те коммиты, которые содержат ссылки на github - пойти на github в соответствующую задачу в репозитории https://github.com/EvilBeaver/OneScript/issues/<НомерЗадачи> и прочитать ее суть.

Те коммиты, которые ссылок на гитхаб не содержат, ты должен просто прочитать и решить - стоит их включать в release-notes или нет, содержат ли они описание конкретной сделанной функциональности, или это промежуточный, технический и не требующий публикации коммит.

Далее, ты должен сделать итоговый дайджест того, что было сделано в версии и записать это в файл install/release-notes.md. Каждая задача это отдельный bullet-point, причем ссылки на github должны быть сделаны в markdown реальными кликабельными ссылками.

## Формат файла release-notes

В начале записывается заголовок "Версия <НомерВерсии>. Какая сейчас конкретно версия ты должен посмотреть в файле Jenkinsfile в параметре VersionPrefix и взять его.

Далее идет перечень сделанных задач, как описано выше.
Задачи разбиваются на две группы: исправление ошибок и новые возможности. Соответственно в release notes добавляются два раздела уровня "заголовок 2" для "Новые возможности" и "Исправление ошибок". Если задач по какой-то категории нет (например, были только исправления, а новых фич не было), то соответствующий раздел не добавляется в файл совсем.

## Instructions

1. Определи текущую выпускаемую версию, прочитав файл Jenkinsfile и его параметр VersionPrefix в самом начале
2. Определи тег предыдущей версии. Для этого запроси его у пользователя, если тег не был сразу задан в промпте
3. Выполни команду gitlog, как показано выше, для получения истории коммитов между версиями
4. Составь дайджест изменений и запиши их в install/release-notes.md
2 changes: 1 addition & 1 deletion Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ pipeline {
agent none

environment {
VersionPrefix = '2.0.2'
VersionPrefix = '2.1.0'
outputEnc = '65001'
}

Expand Down
103 changes: 84 additions & 19 deletions README-EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,31 @@ The OneScript distribution already includes a set of the most commonly used pack

### Linux ###

#### v2.x (current branch) — .NET 8.0 based ####

Two ZIP archive variants are available:

| Variant | Description | External dependencies |
|-------------------------------|--------------------------------------------|------------------------------------------------------------------------------------|
| **SCD** (self-contained) | .NET Runtime is bundled inside the archive | None |
| **FDD** (framework-dependent) | Smaller archive | Requires [.NET Runtime 8.0](https://learn.microsoft.com/dotnet/core/install/linux) |

Installation steps:
- Download the ZIP archive for Linux from the [Releases](https://github.com/EvilBeaver/OneScript/releases) section or from the [official website](https://oscript.io).
- Extract the archive to a convenient directory.
- Set executable permissions:
```bash
chmod +x oscript
chmod +x ./oscript
```

The FDD variant requires .NET Runtime 8.0 — see installation instructions for your distribution at [learn.microsoft.com/dotnet/core/install/linux](https://learn.microsoft.com/dotnet/core/install/linux).

#### v1.x LTS — deb package (Mono) ####

The LTS branch is distributed as a `.deb` package and runs on Mono. The package automatically installs the minimum required Mono components; however, **the debugger requires `mono-complete`**.

> **Important for debugging on Ubuntu/Debian:** if breakpoints are not being hit, install `mono-complete` from the **official Mono Project repository** (not from the distribution's default repositories). For instructions specific to your system, see the [Mono Project website](https://www.mono-project.com/download/stable/#download-lin).

### MacOS ###

- Download the ZIP archive for macOS (x64 or arm64) from the [Releases](https://github.com/EvilBeaver/OneScript/releases) section or from the [official website](https://oscript.io).
Expand All @@ -57,50 +75,97 @@ The OneScript distribution already includes a set of the most commonly used pack

## Preparation

Links to distributions are provided below, however, please note that links may change over time and their relevance is not guaranteed. You need dotnet SDK and C++ compiler, which can be downloaded from anywhere you can find.
To build the project you need:

* [.NET SDK 8.0](https://dotnet.microsoft.com/download/dotnet/8.0) (the project's target framework is `net8.0`).
* A C++ compiler — only required to build the native bridge `ScriptEngine.NativeApi` (support for native add-ins compatible with the 1C NativeApi). On Windows the easiest way to get one is to install [MS Build Tools](https://visualstudio.microsoft.com/visual-studio-build-tools/) or Visual Studio with the "Desktop development with C++" workload. If a C++ compiler is not available, see the `NoCppCompiler` parameter below.

* Install [MS BuildTools](https://visualstudio.microsoft.com/ru/thank-you-downloading-visual-studio/?sku=buildtools&rel=16), when installing enable targeting for .net6, .net4.8, install C++ compiler.
> Distribution links may change over time, their relevance is not guaranteed.

## Build

Launch Developer Command Prompt (will appear in the Start menu after installing MSBuildTools or Visual Studio). Navigate to the OneScript repository directory. The following are commands in the Developer Command Prompt console.
Build is performed using msbuild. Targets:
The build is driven by MSBuild via the `Build.csproj` script in the repository root. Commands can be run with `msbuild` (Developer Command Prompt installed together with MS Build Tools/Visual Studio) or with `dotnet msbuild` (cross-platform).

* CleanAll - clean previous build results
* BuildAll - prepare files for distribution
* MakeCPP;MakeFDD;MakeSCD;BuildDebugger - separate build targets for preparing different types of distributions
* PrepareDistributionFiles - build full distribution packages (including libraries)
* PackDistributions - prepare ZIP archives for distribution
* CreateNuget - create packages for publishing to NuGet
Main targets:

* `CleanAll` — clean previous build results;
* `BuildAll` — build binary files for distribution (FDD, SCD, debugger; native components are also built when a C++ compiler is available);
* `MakeCPP`, `MakeFDD`, `MakeSCD`, `BuildDebugger` — individual targets that build specific parts of the distribution;
* `GatherLibrary` — download and stage the base set of libraries (`opm`, `asserts`, `logos`, `fs`, `tempfiles`, `cli`);
* `PrepareDistributionFiles` — build full distribution contents (including libraries and documentation);
* `PackDistributions` — pack the distribution contents into ZIP archives for all supported platforms;
* `BuildDocumentation` — generate the platform reference (markdown + json);
* `CreateNuget` / `PublishNuget` — build and publish NuGet packages;
* `Test` (`UnitTests`, `ScriptedTests`) — run unit and acceptance (BSL) tests.

**Build parameters**

* VersionPrefix - release number prefix, its main part, for example, 2.0.0
* VersionSuffix - version suffix, which usually acts as an arbitrary versioning suffix according to semver, for example, beta-786 (optional)
* NoCppCompiler - if True - C++ compiler is not installed, C++ components (NativeApi support) will not be added to the build
* `VersionPrefix` — main part of the release number, for example `2.0.0` (defaults to `2.0.0`);
* `VersionSuffix` — optional SemVer suffix, for example `beta-786`;
* `NoCppCompiler` — when set to `True`, native C++ components (NativeApi) are not built and not included in the distribution (use it when no C++ compiler is installed);
* `Configuration` — build configuration, defaults to `Release`. For a debug build on Linux use `LinuxDebug`.

All distribution files will be placed in the `built` directory at the root of the 1Script repository
All build artifacts are placed in the `built` directory at the repository root.

### Building distribution contents in a separate directory

```bat
msbuild Build.csproj /t:CleanAll;PrepareDistributionFiles
dotnet msbuild Build.csproj /t:CleanAll;PrepareDistributionFiles
```

### Building with manual version specification

```bat
msbuild Build.csproj /t:CleanAll;PrepareDistributionFiles /p:VersionPrefix=2.0.0
dotnet msbuild Build.csproj /t:CleanAll;PrepareDistributionFiles /p:VersionPrefix=2.0.0
```

### Building ZIP distributions

```bat
msbuild Build.csproj /t:CleanAll;PrepareDistributionFiles;PackDistributions /p:VersionPrefix=2.0.0 /p:VersionSuffix=preview223
dotnet msbuild Build.csproj /t:CleanAll;PrepareDistributionFiles;PackDistributions /p:VersionPrefix=2.0.0 /p:VersionSuffix=preview223
```

### Building without C++ components (no NativeApi)

```bat
dotnet msbuild Build.csproj /t:CleanAll;PrepareDistributionFiles /p:NoCppCompiler=True
```

### Documentation generation

```bat
msbuild Build.csproj /t:BuildDocumentation
dotnet msbuild Build.csproj /t:BuildDocumentation
```

# Testing

The project has two layers of tests:

* **C# unit tests** — located in `src/Tests/*` (xUnit/NUnit). Run them via `dotnet test` in the corresponding test project directory or all at once:
```bat
dotnet msbuild Build.csproj /t:UnitTests
```
* **BSL acceptance tests** — located in the `tests/` directory and executed by `testrunner.os` against a freshly built `oscript`. The repository includes wrapper scripts:
```bat
rem Windows
tests\run-bsl-tests.cmd src\oscript\bin\Debug\net8.0\oscript.exe
```

```bash
# Linux/macOS
tests/run-bsl-tests.sh src/oscript/bin/Debug/net8.0/oscript
```

Before running the acceptance tests, build `oscript`:
```bat
dotnet build src/oscript/oscript.csproj
```

# Developer documentation

If you want to contribute to the project, take a look at the additional documents in the [`docs/`](docs/) directory:

* [`docs/developer_docs.md`](docs/developer_docs.md) — project architecture, solution layout and guided tour of the source code.
* [`docs/contexts.md`](docs/contexts.md) — a practical guide to adding BSL contexts, methods, properties and global functions.
* [`CODESTYLE.md`](CODESTYLE.md) — C# code style requirements.

Loading
Loading