Remove _IS_NUMERIC macro in favour of concrete function CPIsNumeric()
- Create Foundation/_CPFoundationUtilities.j to house global low-level utilities.
- Implement CPIsNumeric as a concrete JavaScript function, preserving the exact legacy logic.
- Import _CPFoundationUtilities.j in the Foundation.j umbrella manifest.
- Replace _IS_NUMERIC macro calls at all call sites with CPIsNumeric().
- Create Foundation/_CPFoundationUtilities.j to house global low-level utilities.
- Implement CPIsNumeric as a concrete JavaScript function, preserving the exact legacy logic.
- Import _CPFoundationUtilities.j in the Foundation.j umbrella manifest.
- Replace _IS_NUMERIC macro calls at all call sites with CPIsNumeric().
Remove the pre-processor dependency on FORWARD_TO_CONCRETE_CLASS by inlining the class cluster instantiation routing logic across all designated initializers to support the new Go-based toolchain architecture.
Refactor METHOD_CALL_STRING macro to Javascript function
Replace the unhygienic METHOD_CALL_STRING() C pre-processor macro
in CPException.j with a standard JavaScript helper function,
_CPMethodCallString().
Add a `// MARK: - Exception Utilities` navigation landmark.
This removes a legacy text-substitution dependency, enabling
single-pass AST generation for the native compilation pipeline.
Replace the unhygienic METHOD_CALL_STRING() C pre-processor macro
in CPException.j with a standard JavaScript helper function,
_CPMethodCallString().
Add a `// MARK: - Exception Utilities` navigation landmark.
This removes a legacy text-substitution dependency, enabling
single-pass AST generation for the platform-native compilation pipeline.
Merge Aristo3 theme and make it default.
Update README to reflect transition to Cappuccino 2.
Change README extension from .markdown to .md for universal editor support.
Key changes:
- Removed the `CAST_TO_INT` macro and replaced it with native ES6
`Math.trunc()` for float truncation.
- Replaced `var` with `let` for proper block scoping.
- Simplified boolean coercion in `boolValue` using the `!!` operator.
- Replaced the hostile `throw new Error` in `descriptionWithLocale:`
with a safe fallback to `self.toString()`.
- Added `FIXME` comments to explicitly document architectural
anti-patterns, including the global mutable state in `CPNumberUIDs`
and the unimplemented `decimalValue` method.
As part of the ongoing technical debt cleanup, this commit modernizes
CPTimer.j by removing its reliance on the C-preprocessor and updating
syntax to modern JavaScript standards.
Key changes:
- Replaced `#define CPTimerDefaultTimeInterval` with a native `const`.
- Replaced `var` with `const`/`let` for proper block scoping and immutability.
- Replaced the build-time `PLATFORM(DOM)` guard with a runtime
`typeof(window) !== 'undefined'` check, ensuring Foundation does not
depend on build-time platform flags.
- Added `FIXME` comments to explicitly document architectural anti-patterns:
- The invasive global override of `window.setTimeout` and `window.setInterval`.
- The use of `new Function` for string evaluation (CSP violation).
- The questionable exposure of `CPTimerDefaultTimeInterval` as a fallback.
While objc `#pragma mark` works in objj files, it requires a preprocessor to handle the directive.
// MARK: is the fully functional and correct Objective-J variant.
Resolves testKVCCountSetOperators failure in CPSetTest. The previous implementation lacked an override for valueForKey:, causing the runtime to fall back to the default CPObject behavior, which failed to recognize KVC collection operators (e.g., @count).
Delegating valueForKey: to valueForKeyPath: ensures that CPSet correctly routes KVC operations through the existing collection operator logic.
• Refactor @implementation _CPKVCSet and CPObject (CPSetKVO) from _CPSet.j to the tail of CPMutableSet.j.
• Fix legacy compiler parse failures by ensuring the CPMutableSet superclass symbol is fully resolved within the translation unit prior to proxy evaluation.
• Maintain strict DAG compliance across the modern toolchain pipeline topology.
• Embed explicit #pragma mark navigation landmarks and enforce Allman brace layout to improve human structural ergonomics.