Mahdiware™
Kanalga Telegram’da o‘tish
Ko'proq ko'rsatish
Mamlakat belgilanmaganTexnologiyalar & Aralashmalar45 267
503
Obunachilar
+124 soatlar
+37 kun
+8130 kun
Postlar arxiv
503
Almost 99.999% of the Android API integration is now complete. What’s left is mainly performance optimization.
Right now, I’m working on a major upgrade — moving my language from an interpreter to a JIT compiler. This is a big step, and it requires redesigning some core parts, including the bytecode system. Currently, it’s stack-based (like Python), but I’m transitioning it to an argument-based model (similar to Lua). This change should significantly improve performance.
This process will take around 2 months or more to complete.
At the moment, I’m quite busy, so I’ll be maintaining the project on a limited schedule — about one day every two weeks.
503
view.setOnClickListener({
onClick: function(v)
v.setText("View Renamed")
end
})
Interface is optional, now503
🔨 1 new commit to SaynaaIDE:main:
03ac031: disabled: arm computed goto crash by Mohammed Abdifitaax (Mahdiware)
503
+1
If you download the app, you can find the source code inside the /assets folder within the app. If you install it, the app uses a DocumentProvider, which allows you to read or modify the
/data/data/com.android.saynaa/files/folder without needing root access. I’m aware that when the app launches for the first time, it takes a bit of time (not too much). This is because the app reads the source code and processes it through several stages to initialize, such as: Lexer → Parser → Bytecode → VM Also, on the first run, the source code from the assets is copied into
/data/data/com.android.saynaa/files/I will improve and optimize this in the best way In shaa-Allah, I will turn it into an Android IDE that can be used to develop Android APKs—especially mod menus (though mod menus are not the focus right now because they rely on Services; currently, I am focusing more on how Activities are managed).
503
+1
90% of andlua feature are done
- import.lua 100% done
- loadlayout.lua 95% done
- dynamic finding undefined variable into java.bindClass
- and so on
503
🔨 1 new commit to saynaa-lang:big-update:
5b28b49: Refactor bytecode handling and enhance map functionality
- Updated bytecode functions to return a unified Result type instead of custom status enums, improving consistency across the codebase.
- Introduced new map operations: MAP_APPEND for inserting values with auto-incremented integer keys.
- Enhanced map structure to maintain insertion order of keys and support value-only entries.
- Added tests for map insertion order and value-only maps to ensure correct behavior.
- Implemented string manipulation methods, including substring extraction, reversal, repetition, byte access, formatting, matching, and global substitution.
- Improved error handling and status messaging for bytecode operations. by Mohammed Abdifitaax (Mahdiware)
503
+2
Lazy resolution, worked perfectly, and also i tested, loadlayout.sa like as loadlayout.lua andlua has
503
+1
Now saynaa language support Lazy global resolution
_module._missing = function(name) .... end
Simir to lua _G.__index,
Andlua use this technique to load java class, in runtime
These are import.lua some code
local function import_class (classname,packagename)
local res,class = pcall(luajava.bindClass,packagename)
if res then
_G[classname] = class
local mt = getmetatable(class)
mt.__call = call
return class
end
end
local function massage_classname (classname)
if classname:find('_') then
classname = classname:gsub('_','$')
end
return classname
end
local globalMT = {
__index = function(T,classname)
classname = massage_classname(classname)
for i,p in ipairs(packages) do
local class = import_class(classname,p..classname)
if class then return class end
end
error("import cannot find "..classname)
end
}
setmetatable(_G, globalMT)503
🔨 1 new commit to saynaa-lang:big-update:
bbb3eb4: feat: Introduce SAYNAA bytecode file format with header validation and checksum
- Added a new bytecode header structure to ensure file integrity and version compatibility.
- Implemented functions for encoding and decoding the bytecode header.
- Introduced checksum validation to detect corruption in bytecode files.
- Created serialization and deserialization functions for modules to/from bytecode format.
- Added support for a new
package module to replace the old module functionality.
- Implemented global deletion functionality in the package module.
- Updated various tests to validate the new bytecode format and package functionalities. by Mohammed Abdifitaax (Mahdiware)503
Eid Mubarak 🌙✨
May Allah accept from us our fasting, our night prayers, our charity, our recitation of the Qur’an, and all the acts of worship we performed during this blessed month of Ramadan. As this final day of Ramadan comes to an end and Eid begins tomorrow, we ask Allah to grant us forgiveness, mercy, and continued guidance.
Eid Mubarak to you and your family. May it be filled with joy, peace, and blessings.
503
LinearLayout = java.bindClass("android.widget.LinearLayout")
java.bindClass Has no longer needed, we use native import
503
SaynaaIDE: is an Android application runtime for the Saynaa programming language. It combines the Saynaa VM with a JNI-based Android bridge so Saynaa scripts can create views, call Java APIs, register listener proxies, and build Android UI directly on-device.
