Kotlin Native OHOS ASAN 适配
本文主要介绍如何让 kotlin/native 在适配了鸿蒙平台后,开启 asan 功能(kotlin 版本基于 2.0.21)
ASAN 简介
ASAN(Address Sanitizer)是针对 C/C++ 的快速内存错误检测工具,在运行时检测 C/C++ 代码中的多种内存错误
本文主要介绍如何让 kotlin/native 在适配了鸿蒙平台后,开启 asan 功能(kotlin 版本基于 2.0.21)
ASAN(Address Sanitizer)是针对 C/C++ 的快速内存错误检测工具,在运行时检测 C/C++ 代码中的多种内存错误
kotlin/native 适配鸿蒙,除了编译器方面的修改之外,还有比较重要的一部分就是 napi 代码的自动生成了
kotlin/native 和 napi 的关系:
kotlin/native 实际产物就是对应平台二进制,在 ohos 上就是 linux elf
ohos 上层应用使用 arkts 开发,想调用 so 中的方法,有一层类似 jni 的机制,其实就是 nodejs 的 napi 机制
所以,想从 arkts 调用 kotlin/native 的代码,其实就是要自己写一层 napi
最近在 kotlin/native 上适配鸿蒙,感觉坑很多。而且 kotlin/native 相当于用 kotlin 写 c/c++,出现内存问题,一样挠头
其次,kotlin/native 因为要适配 iOS 的 platform,和 xcode 绑定的也很死,同时自己又和 llvm 绑定的很死,编译的时候有各种问题,比如 kotlin 1.9.x 没法和 xcode16 一起使用···
为什么选这个奇怪的时间写下这篇文章呢?因为我终于确定了一个 offer 了!(当然后续可能也有幺蛾子,比如小米 offer call 以后,又说没有 hc,雷总···你们招人也太奇怪了···)。然后,这段时间的经历实在让我脑壳子嗡嗡的,又做了一次人生的错误决定来到传说中的宇宙条,不过人生的魔抗叠厚了不少···
最近做日志治理(其实也没啥治理的),发现日志存活时间很短,因为各个业务方的日志汇总在一个实例里,有任何无用日志频繁打印,都会把日志覆盖掉
那其实,治理的办法也很简单:
为了兑现自己立下的 flag 🤣,这两天刚好假期前,继续实现 JVM
打算定个小目标:每个月更新一次 LearnJVM 这个项目
第五章的指令好多好多,所以还在不断地 copy & paste
实现的途中发现了 ICONST_X 指令很有意思,如下图:
虽然今天是愚人节,但是还是要立下 flag,重启 JVM 项目
之前,一方面想学习 rust,一方面也想更深入的理解 JVM,于是这么一个项目就诞生了
源码来自 《自己动手写Java虚拟机》,我将 go 翻译为 rust(但是因为很多 rust 概念刚接触,写的结构很凌乱,也都不是最佳实践,只求编译通过)
今天 pull 工程,发现有个库的源码看不到,在 gradle external libraries 中也找不到,只能找到一个 api 接口层的代码
于是,就研究了一下原因
我们在向 maven 发布 aar 时,会生成对应的 pom 文件,告诉我们具体依赖哪些额外 lib
最近 KMP 或者说 KMM 在移动端挺火,我非常好奇它是如何跨端的
看了一下官方文档,只知道是通过 LLVM 把 Kotlin 转为 IR 再转为目标平台二进制。这部分我目前还没去分析,因为 LLVM 相关的知识我实在知之甚少,后面也会去补足
为了公司内部写一篇软文,所以这篇文章重写了一下~~
今天给大家分享一种 arm64 平台下栈回溯的方式 —— fp(frame pointer) 回溯,同时会介绍一些基础概念和实现原理
首先,我们需要知道栈回溯是做什么的?
其实就是用于获取当前 thread 的调用堆栈的