Comments (2)
MetalPetal chooses Objective-C with the following reasons:
- Apple wrote Metal.framework in Objective-C/C++.
- MetalPetal's current design can be well implemented using Objective-C.
- We can provide a thin Swift layer over the Objective-C implementation to make Swift users "feel at home". (MetalPetal/Swift,
NS_SWIFT_NAME
, etc.) - We have Objective-C audiences.
- If we finally need to switch to Swift, we can easily maintain source compatibility. This means the framework users (you) do not need to change a single line of code when the framework itself switches to Swift.
- Other considerations: Some "tricks" can be done more easily on Objective-C side; Some SIMD types (simd_uint8, simd_uint16, simd_int8, simd_int16, etc) are not available with Swift (as of Swift 4.2); We cannot interact with JavaScript interfaces with pure Swift class/struct (Yes, we developed a JavaScript interface: MetalPetalJS! You can use JavaScript with JavaScriptCore.framework to build filters/image processing pipelines).
We try to design MetalPetal to be a better framework instead of just following the trends. There's no plan to switch to Swift currently. We'd like to wait until we see more advantages of using Swift instead of Objective-C, or Apple rewrites Metal.framework using Swift.
If you'd like to make MetalPetal better, you can start by using it in your own project, provide your feedback/bug report, write blogs about how you make use of MetalPetal, or provide design proposals and bug fixes.
from metalpetal.
Thank you for your well versed response.
Appreciated.
from metalpetal.
Related Issues (20)
- iOS 16 Error: use of undeclared identifier 'metalpetal' HOT 2
- Video overlay on a video using MTIBlendMode.screen
- Disregard
- This library format is not supported on this platform (or was built with an old version of the tools) HOT 3
- MetalPetal on macOS Sonoma
- General shader slow rendering
- How to fix 'MTIShaderLib.h' file not found in package? HOT 5
- MTIImageView always displays images using scaleAspectFit HOT 1
- Extend MTIImageView.init with context parameter
- Value of type 'MTIRenderPipelineKernel' has no member 'apply' HOT 1
- Memory consumption too high while applying asset transform on sourceImage
- Unable to read custom metal shader files
- Rendering image to drawable: no texture found on color attachment 0. This could happen when the drawable size is less than 16x16 p HOT 1
- Hey guys, HOT 1
- export gif file as overlay with MTIVideoComposition
- enablesRenderGraphOptimization option hangs
- Adding a 3D LUT (.cube file) to a MTLTexture?
- Importing video problems HOT 2
- Memory optimisation HOT 2
- Is this project still being maintained? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from metalpetal.