- Replace global errno variable with __errno_location function
- Add complete strerror implementation for standard error codes
- Implement perror function for error message output
- Move strlen implementation to separate string.c file
- Update getcwd to use new errno macro instead of direct variable
- Mark getcwd as weak symbol to allow overriding
- Remove unimplemented strerror stub from assembly file
- Add 128-bit integer helpers from compiler-rt builtins
- Update third-party dependencies with detailed documentation
- Improve curl download scripts with silent
- Implemented opendir, readdir, closedir, and related directory functions
- Added fcntl system call support with proper flag handling
- Integrated compiler-rt builtins for 128-bit integer operations
- Updated build system to fetch and compile compiler-rt dependencies
- Refactored ls command to use standard POSIX directory APIs
- Added directory file descriptor management in kernel
- Implemented getdents64
- Added Linux-compatible file metadata syscalls (stat, lstat, fstat, newfstatat)
- Implemented access control checks with faccessat and related flag definitions
- Added file persistence operations (fsync, fdatasync, truncate, ftruncate)
- Integrated clock syscalls (gettimeofday, clock_gettime, clock_getres)
- Added process identity queries (getpid, getppid, gettid, getuid, getgid)
- Changed exit mechanism from exit(60) to exit_group(231) for consistency
- Updated crt0.S with Linux x86-64 exit_group ABI compatibility
- Extended fcntl.h with AT_SYMLINK_NOFOLLOW and AT_EACCESS constants
- Added complete syscalls implementation in user/libc.c and runtime/posix.c
- Implemented kernel-side syscall handlers in process.c with proper validation
- Added systest utility to verify file metadata, persistence and identity calls
- Updated Makefile dependencies to track user header changes
- Enhanced README documentation for new
- Configure kernel-only paging with separate user virtual regions
- Add PHP Nano project compilation with link library support
- Implement aligned memory block management for Zend allocator
- Create reusable libtypephp-os.a platform archive for TypePHP userspace
- Add uname system call support and update user-space syscalls
- Increase QEMU memory allocation from 128M to 160M
- Add TNHELLO.ELF as full TypePHP + PHPX
- Remove nm command execution for checking undefined symbols during build
- Add explanatory comment about native objects providing OS ABI to each other
- Update translator to only check undefined symbols in final ELF target
- Clarify that only unresolved imports in final executable cross host boundary
- Maintain auditor checks while removing intermediate object file validation
- Add crt0.S assembly startup code for user mode entry point
- Create hello.php example application with basic system information output
- Add hello.yml build configuration for nano user mode executable
- Implement host.cc with system call interfaces and runtime initialization
- Add linker script for proper user mode memory layout
- Update Makefile with new user base addresses for shell and commands
- Implement posix.c with POSIX compatibility layer using system calls
- Update process.c with new user memory range constants and stack sizes
- Add syscall.S assembly wrapper for Linux system call interface
- Modify vm.c with expanded user address space mapping and cleanup
- Update vmfault.c with correct shell memory address reference
- Add ATA disk cache with LRU eviction strategy and hit/miss statistics
- Introduce disk cache metrics accessible through kernel API
- Update boot sequence to enable long mode and execute-disable page permissions
- Replace custom syscalls with standard POSIX equivalents in user programs
- Add new user utilities including cat, echo and fault testing command
- Enhance FAT16 volume implementation with full path traversal and file operations
- Implement comprehensive filesystem layer supporting nested directories
- Add file operations for reading, writing, creating and deleting files/directories
- Include directory listing and
- Add date command implementation that displays current time in UTC format
- Add pwd command to print current working directory
- Update Makefile to build date and pwd as user programs with shared ELF loading
- Refactor syscall handling to use shared header definitions
- Remove KernelGreeting class from kernel startup sequence
- Update README and ROADMAP documentation for new user commands
- Add test assertions for date and pwd command output in test suite
- Introduce reusable command address space management in process.c
- Add user-accessible page mapping (32-36 MiB) in boot.S with proper permission bits
- Implement ELF64 loader and process management in new process.c module
- Add syscall infrastructure including int 0x80 handler in process-entry.S
- Create userspace programs (sh, ls, cd) with dedicated linker script
- Integrate filesystem path type checking and directory listing functions
- Reserve memory regions for user processes and update kernel memory layout
- Add console input/output support for userspace applications
- Update kernel main loop to start user process after initialization
- Modify Makefile to build and embed userspace ELF images as kernel objects
- Document new userspace capabilities and limitations in README.md
- Implemented low-level ATA PIO driver with read/write/flush operations
- Added FAT16 filesystem layer with directory and file management
- Created bridge between C disk operations and PHP filesystem API
- Integrated disk availability detection and LBA sector access
- Implemented file operations including open, read, write, and close
- Added support for directory creation, file listing and renaming
- Included proper error handling and disk initialization logic
- Include 'std/fs.h' in the list of standard library headers
- Enable filesystem operations support in the translator
- Add file system utility functions access for users
- Add objects section to project.yml for linking precompiled .o/.obj files
- Implement getProjectObjectFiles method to retrieve precompiled objects
- Add c-flags and asm-flags support in CompilerBase
- Extend GCC backend to handle cflags and nativeflags configuration
- Update compiler to include project object files in linking process
- Add freestanding C++ allocation ABI implementation using Zend MM
- Include example TypePHP OS with kernel entry point and hardware stubs
- Add assembly files for boot sequence and kernel entry point
- Implement basic libc compatibility layer for Zend bootstrap
- Add try/catch macro replacement in generated code indentation
- Create bridge between C++ kernel and PHP code
- Add linker script for 64-bit kernel binary generation
- Updated swoole/phpx from ~2.8.0 to ~2.8.1
- Moved swoole/php-nano from require to require-dev with version ^1.0.0
- Updated project version from 0.8.0 to 0.8.1 in project.yml
- Updated file and product versions in project.yml to 0.8.1
- Updated VERSION constant in Translator.php to 0.8.1
- Add native source project compilation workflow with project.xml configuration
- Implement closure reference capture analysis and type degradation for native objects
- Add WASI and nano mode function support checks with comprehensive API exclusions
- Introduce Composer native package discovery and validation system
- Add build scripts for WASI nano program compilation with browser module support
- Implement closure generator enhancements for reference capture handling
- Add CLI usage tests and compiler base API validations
- Integrate php-nano runtime dependencies and native package management
- Add type degradation analysis for closure use variables in generators and functions
- Renamed std::ordered_map to std::orderedMap following camelCase naming convention
- Added new std::object() function to restore concrete object type information
- Updated all test files to use the new orderedMap naming
- Modified parser to recognize orderedmap in assign operations
- Updated documentation to reflect the new naming and function
- Added polyfill implementation for std::object()
- Updated README and changelog with
* fix(compiler): support first-class callable of internal functions
PHP 8.1 `foo(...)` builds a Closure from a single VariadicPlaceholder
argument instead of calling foo. Two paths mishandled it:
- checkInternalFunctionArgCount() counted the placeholder as a real
argument, so first-class callables of internal functions requiring 2+
parameters (e.g. `posix_kill(...)`) failed with a bogus "expects at
least N arguments, 1 given".
- The math-function return-type optimization read `$expr->args[0]->value`
on callables such as `round(...)`, crashing on the undefined
VariadicPlaceholder::$value property.
Guard both with isFirstClassCallable() so the expression falls through to
Closure (Type::OBJECT) resolution.
* fix(compiler): infer builtin callables before return optimizations
---------
Co-authored-by: Tinywan <tinywan@gmail.com>
- Removed redundant zval macro handling for property access
- Replaced Z_LVAL_P and Z_DVAL_P calls with direct attribute accessors
- Updated property getter logic to use attrInt and attrFloat methods
- Modified tests to match new property access pattern
- Added comprehensive test case for inherited property reference handling
- Allow int, float, bool, string, and array Native Class properties to be passed
directly to matching reference parameters on statically resolved calls
- Generate call-scoped C++ T& bindings for typed reference parameters instead
of creating Zend references
- Maintain compile-time rooting of Native receiver objects during typed calls
- Add new parseNativeTypedPropertyReferenceArg method to handle typed property
reference arguments
- Update documentation to reflect new typed reference capabilities for fixed
Native properties
- Create new test case covering typed property reference functionality
- Modify changelog to document the
- Add mobile native development capabilities to cross-platform features
- Include Android NDK and iOS SDK support in platform targets
- Update backend support to mention Android arm64-v8a and iPhoneOS arm64
- Add information about mobile app UI bridge architecture
- Include links to Android native app example and iOS/macOS native app example
- Clarify mobile development workflow with TypePHP for business logic
- Create Android project structure with build configuration and manifest
- Implement PHP-to-Java bridge with JNI integration for native Android UI components
- Add comprehensive UI stub functions including window creation, labels, buttons, and inputs
- Develop Android Activity with native View bridge and layout management system
- Integrate build scripts for compiling PHP into Android shared library and packaging APK
- Include installation script with ADB deployment and application launching
- Provide complete Hello World application demonstrating TypePHP Android capabilities
- Add proper Git ignore rules and documentation for the Android example
- Implement Android platform class with API level detection and compiler configuration
- Add Android-specific library linking with proper archive grouping and system libraries
- Integrate Android target detection and SDK directory resolution in build configuration
- Add Android-specific compile flags including static libstdc++ and security hardening
- Include Android platform support in translator and compiler base classes
- Add PHPX_ANDROID=1 define flag for Android builds
- Support
- Update swoole/phpx from ~2.7.0 to ~2.8.0 in composer.json
- Add proper button styling for macOS 11+ with automatic button styles
- Fix control nil check in macos_bridge.mm to prevent crashes
- Use title property for NSButton updates on macOS to handle system-style buttons
- Refactor unset handling in PropertyAccessTrait to use type-specific defaults
- Replace hardcoded default values with Type::getDefaultValueExpression calls
- Add
- Updated std::any to accept zero or one arguments instead of requiring exactly one
- When no argument is provided, std::any now returns null by default
- Modified parser logic to handle omitted parameter case in FunctionCallTrait
- Updated documentation in both English and Chinese to reflect optional parameter syntax
- Added test case demonstrating std::any() call without parameters returning null
- Changed error message to indicate zero or one argument requirement instead of exactly one
- Create native macOS GUI application using TypePHP and Objective-C++ bridge
- Implement thin wrappers around AppKit API for window management and controls
- Add support for labels, buttons, and event handling in native macOS interface
- Include proper Info.plist configuration and code signing script for app bundles
- Provide complete example with application lifecycle and user interaction
- Document build requirements and packaging instructions for macOS distribution
- Add five new reference types (INT_REF, STR_REF, FLOAT_REF, BOOL_REF, ARRAY_REF)
- Create typed reference ABI using C++ references for strict type safety
- Implement RefWrap<T> bridge for dynamic PHP reference compatibility
- Add getRawVarType() and update getVarType() to handle reference unwrapping
- Enforce strict typing rules preventing fixed storage corruption via references
- Support typed property and array element reference handling
- Implement exception-safe reference binding with proper
- Replace manual array key parsing with direct Node\Scalar\Int_ creation
- Route all destructuring assignments through parseAssignFinally for proper type handling
- Remove redundant left expression type detection in assignment operations
- Fix argument index mapping in CallArgumentGenerator to use source indices correctly
- Restore outer context before closure reference validation to prevent type conflicts
- Remove unused local variable promotion logic in foreach reference binding
- Add explicit error messages for native variable reference capture attempts
- Track foreach target variables in SSA optimizer for proper type analysis
- Use numeric indices instead of case labels in switch statement generation
- Add comprehensive tests for varint type handling in foreach loops
- Replace direct function calls with call() wrapper in ext.cc
- Remove unused php_func.h include
- Add new ctype/main.php example with isAsciiWhitespace function
- Implement proper parameter validation for ASCII range checking
- Add main function to demonstrate ctype space detection usage
- Replace any() with std::any() in test files and compiler logic
- Replace refval() with std::ref() for reference wrapping operations
- Replace expected() with std::expected() for branch prediction hints
- Replace unexpected() with std::unexpected() for branch prediction hints
- Remove deprecated objval() function and use toObject() keyword method
- Update parser to recognize std:: class expressions with case insensitivity
- Add comprehensive changelog documenting breaking API changes
- Update documentation to reflect new std:: namespace conventions
- Add tests for case-insensitive std class and method names
- Verify global function names remain available for user-defined functions
- Replace ArgList with VarList for fixed argument arrays to avoid dynamic Args allocation
- Add call argument limit assertion to prevent unbounded call generation
- Implement direct static method calls using callStaticMethod when possible
- Add alternating dynamic static call benchmarks for class and method variations
- Update documentation on request-local call slot destruction requirements
- Fix dynamic static call target evaluation order to precede argument evaluation
- Add tests for call argument limits and dynamic class evaluation ordering