andrey
94084fb351
Merge branch 'master' into webasm
...
Переработка ветки под систему фиче-флагов master:
- CMake-секция PIP_WASM (платформа, аналог PICO/FREERTOS): принудительный
OFF PIP_HAS_SOCKET/PROCESS/DYNLIB/SERIAL и PIP_BUILD_CONSOLE/USB/OPENCL/
FFTW/LUA/MQTT_CLIENT/HTTP_SERVER/HTTP_CLIENT до pip_resolve_feature_flags();
таблица зависимостей довыключает client_server/cloud/introspection
- Файлы, покрытые фиче-флагами master (piethernet/piserial/pican/pilibrary/
piprocess): взята master-версия, EMSCRIPTEN-стубы webasm удалены как
мёртвый код (нет флага — нет класса)
- Сохранены EMSCRIPTEN-гварды там, где флаги не покрывают поведение:
pihidevice (компилируется под wasm), piinit (initSignals/initLocale/
initUsername/initOSname/initHWInfo), pisysteminfo (instance/machineKey),
pithread (gettid-фоллбэк), picout (EM_ASM console.log),
pibase_macros (PIP_MIN_MSLEEP), pipiplatform.h (EMSCRIPTEN/ARCH_BITS)
- Исправлен AUTO-merge в PISystemInfo::machineKey() (семантический баг:
пустой результат при PIP_HAS_FILESYSTEM=OFF)
Проверено: нативный ctest 364/364 (build-verify), wasm-сборка (build_wasm,
лишь libpip.a + libpip_io_utils.a + pcre2), node-смоук-тест PICout/PISystemInfo
2026-09-19 11:01:39 +03:00
andrey
8fc2be8dd9
fix: complete PIP_HAS_* flag matrix and restore ESP32/FreeRTOS support
...
- CMake: disable thread/socket-dependent modules (http_client, mqtt_client,
client_server) and fftw when the required feature flags are off;
client_server/cloud no longer tied to the crypt option
- host utils gated on filesystem and the modules they need
- Pico keeps the minimal set; generic FreeRTOS (ESP32) keeps filesystem,
sockets and serial as in master, module set limited to crypt/compress/io_utils
- PICAN, PIBroadcast, PIPackedTCP vanish without socket+threads
- PISerial: restore PISERIAL_NO_PINS (auto-enabled on PIP_EMBEDDED)
- PIFile: FREERTOS uses fopen/stat (no fopen64 in ESP-IDF newlib)
- drop invalid PICout buffer guards, guard PIObject::deleteLater,
remove (void)destroying hack, fake PIHIDevice non-Linux stub and the
redundant PICO_SDK guard in code_model_generator
2026-08-22 19:23:22 +03:00
andrey
f6075307b6
style: run clang-format over all files
2026-08-22 15:52:58 +03:00
andrey
077ac9887b
refactor: rename PIP_NO_\* to PIP_HAS_\* with inverted logic
...
All feature flags now use positive naming (enabled by default):
- PIP_HAS_FILESYSTEM, PIP_HAS_THREADS, PIP_HAS_SOCKET
- PIP_HAS_PROCESS, PIP_HAS_DYNLIB, PIP_HAS_FFT, PIP_HAS_SERIAL
Preprocessor guards inverted:
- #ifndef PIP_NO_X → #ifdef PIP_HAS_X
- #ifdef PIP_NO_X → #ifndef PIP_HAS_X
CMake options default ON instead of OFF.
Platform blocks set flags OFF to disable features.
85 files transformed via Python script + 2 manual fixes.
2026-08-11 19:51:42 +03:00
andrey
75bab5a4b9
feat: add WebAssembly (Emscripten) build support
...
- Platform detection: EMSCRIPTEN/WASM macros in piplatform.h
- CMake: PIP_WASM option, auto-detect, STATIC lib, pthread flags,
disable incompatible modules (console, usb, fftw, opencl, lua,
http_server, http_client, mqtt_client)
- Macros: environ, SHUT_RDWR, HAS_LOCALE off, PIP_MIN_MSLEEP=10ms
- System stubs: process, signals, library, systeminfo, hidevice
- IO stubs: serial, ethernet, can, sharedmemory
- Thread: gettid() fallback via pthread_self()
- Core: locale/init adjustments, console.log routing via EM_ASM
- Fix: toDecimal precision loss, unreachable code in createPipe
2026-08-11 18:19:54 +03:00
andrey
4d8b743075
refactor: migrate MICRO_PIP to fine-grained feature flags
...
Replace monolithic MICRO_PIP/PIP_MICRO with granular flags:
Feature flags (CMake options + platform auto-detection):
- PIP_NO_FILESYSTEM, PIP_NO_THREADS, PIP_NO_SOCKET
- PIP_NO_PROCESS, PIP_NO_DYNLIB, PIP_NO_FFT, PIP_NO_SERIAL
Embedded optimization flag:
- PIP_EMBEDDED (auto-set for Pico SDK and FreeRTOS)
Controls buffer sizes, time stubs, terminal fallback, init stubs
Platform blocks in CMakeLists.txt:
- Pico SDK: auto-disables FS, PROCESS, DYNLIB, FFT, SERIAL;
conditionally disables THREADS (no FreeRTOS) and SOCKET (no LWIP)
- FreeRTOS: auto-disables FS, PROCESS, DYNLIB, FFT, SERIAL;
conditionally disables SOCKET (no LWIP)
- Android: auto-disables PROCESS, DYNLIB, FFT
Updated 96 files across libs/, utils/, tests/, and CMakeLists.txt.
Builds verified for Linux (547 tests pass) and Pico SDK (100%).
Removed all MICRO_PIP and PIP_MICRO references (0 remaining).
2026-08-11 14:34:59 +03:00
andrey
3ea5af750e
feat: add WebAssembly (Emscripten) build support
...
- Platform detection: EMSCRIPTEN/WASM macros in piplatform.h
- CMake: PIP_WASM option, auto-detect, STATIC lib, pthread flags,
disable incompatible modules (console, usb, fftw, opencl, lua,
http_server, http_client, mqtt_client)
- Macros: environ, SHUT_RDWR, HAS_LOCALE off, PIP_MIN_MSLEEP=10ms
- System stubs: process, signals, library, systeminfo, hidevice
- IO stubs: serial, ethernet, can, sharedmemory
- Thread: gettid() fallback via pthread_self()
- Core: locale/init adjustments, console.log routing via EM_ASM
- Fix: toDecimal precision loss, unreachable code in createPipe
2026-08-11 01:52:14 +03:00
peri4
f334a6603f
adopt for new MinGW
2025-01-06 12:55:44 +03:00
peri4
65d3168eb5
PICout::withExternalBufferAnd decomposed to PICout::withExternalBufferAndID and PICout::withExternalBufferAnd
...
PIString::toPercentageEncoding/fromPercentageEncoding
piStringify()
PIHTTPClient support arguments
some doc
2024-11-26 18:26:02 +03:00
peri4
f5270d75eb
multi-utf16 fix
2024-11-21 16:28:19 +03:00
peri4
cd7e053fc5
version 4.2.0
...
move toStdFunction() to pibase.h
refactor PIParseHelper, now it much more abstract and useful
fix PIIODevice::createFromFullPath() when whitespaces at start or end are presence
PIStreamPacker add events for start and end packet receive
PIClientServer::ClientBase add virtual methods for start and end packet receive. also one can enable diagnostics with enableDiagnostics() method
PICout now call flush() on each end of output
add PIString::entries(const PIString & str)
2024-10-15 12:02:18 +03:00
peri4
000ce2a54d
PICout improvement:
...
* renamed private members for more clear code
* registerExternalBufferID() method to obtain unique ID for withExternalBuffer()
* PICoutManipulators::PICoutStdStream enum for select stream (stdout or stderr)
* Constructors now accept optional stream
* piCerr and piCerrObj macros
PIDir::temporary() moved to "mkdtemp"
PILog:
* now 4 levels
* you can set max level
* Error writes to piCerr
2024-09-16 16:06:07 +03:00
peri4
c2b8a8d6da
code format
2022-12-14 14:13:52 +03:00
peri4
499ee386a7
PIString::toFloat/Double/LDouble own fast implementation (. and , equivalent)
...
PICout ldouble support
PIEthernet small optimization
2022-09-17 17:53:58 +03:00
Бычков Андрей
60f4db61eb
Merge branch 'master' of https://git.shs.tools/SHS/pip
2022-08-08 17:14:21 +03:00
Бычков Андрей
724a2dffcf
picout and clean
2022-08-08 16:44:37 +03:00
peri4
8551499a5e
PICout refactoring, new SHSTKMacros
2022-08-07 22:07:26 +03:00
peri4
bd98583116
PIString delete operator += int
...
PICout fix
2022-07-29 20:09:40 +03:00
Бычков Андрей
ddba8f401b
PICout fix
2022-07-29 18:16:42 +03:00
peri4
a4882dc054
complex macros with ;
2022-07-25 11:18:09 +03:00
peri4
1b04d7ecce
version 2.93 ready to master
...
remove PIString << operators
2022-06-24 12:10:57 +03:00
peri4
0b3ee4bb6a
doc ru
2022-05-05 22:31:59 +03:00
peri4
d1f7065c8a
PICout::writePIString -> PICout::write
2022-05-05 10:35:15 +03:00
peri4
6881fd13b7
PIConstChars
2022-04-29 23:53:07 +03:00
peri4
c1c47b4869
locale changes, piscreen
2022-04-27 12:41:38 +03:00
peri4
2f4e73ef13
console encoding patch
2022-04-26 22:49:31 +03:00
Andrey
765ef7368e
PIString replace pibytearray by char *
2022-04-25 11:42:58 +03:00
peri4
fcd871c0fc
doc
2022-04-23 12:32:17 +03:00
peri4
6485d81025
piobject metasystem memory and performance optimization
2022-04-22 15:35:25 +03:00
peri4
c7e67b309e
picout fix
2022-04-13 22:46:53 +03:00
Andrey
2ab2614ab4
PICout optimization
2022-04-13 17:59:24 +03:00
peri4
7a26ae7292
doc ru
2022-03-17 18:13:02 +03:00
peri4
cc4e1f48aa
doc ru
2022-03-17 00:57:15 +03:00
peri4
cbdaabee4a
some build fixes
2022-01-07 01:58:38 +03:00
andrey
25def958a1
rename doc macros
2021-08-04 16:31:32 +03:00
peri4
ccd6a9888f
tree changes
2020-08-19 00:47:05 +03:00