What's the use case of returning a pointer from a v8 fast api?

On Monday, April 28, 2025 at 4:50:32 AM UTC-4 aapo.al...@gmail.com wrote:

> Don't forget about pointers! Those can be returned as well :)
>
> On Monday, 28 April 2025 at 09:48:28 UTC+3 ah...@google.com wrote:
>
>> Hi,
>>
>> I would say the V8 Fast API is still considered unstable. Since many 
>> limitations were removed, not only the documentation but also the APIs are 
>> out-dated and would benefit from cleanup. However, since old APIs have to 
>> be deprecated before they can be changed, this takes some time.
>>
>> When it comes to arguments, there are some subtle limitations left, see 
>> [1], but those are platform-specific. Mostly all limitations should be 
>> gone. I will go over the documentation and update it. When it comes to 
>> return values, then indeed, as you noted, objects and strings cannot be 
>> returned, only integers, floats, and void.
>>
>> The heuristics of CFunction overloads depends now only on the number of 
>> arguments. If an API function is called in JavaScript with n parameters, 
>> then it will call the C++ function which expects n parameters. If no such 
>> C++ exists, then no fast call is happening. If the API has overloads or 
>> optional parameters, then this has to be resolved by the C++ functions. 
>> There should not be two CFunctions with the same number of arguments, 
>> although I'm not sure if we are checking for that.
>>
>> Unfortunately, `FastOneByteString` is faster than what you can achieve 
>> with a `v8::Local<v8::Value>` parameter, when you use `FastOneByteString`, 
>> you should not trigger a GC.
>>
>> Cheers, Andreas
>>
>> [1] 
>> https://source.chromium.org/chromium/chromium/src/+/main:v8/src/compiler/fast-api-calls.cc;l=65;drc=2bf826180ca85d007fb39024ff18322fa4635efb
>>
>> On Thu, Apr 24, 2025 at 10:17 PM 'Yagiz Nizipli' via v8-dev <
>> v8-...@googlegroups.com> wrote:
>>
>>> We are actively investigating/working on adding V8 Fast API support for 
>>> Cloudflare Workers. While looking at the v8-fast-api-calls.h file (ref: 
>>> https://github.com/v8/v8/blob/main/include/v8-fast-api-calls.h) , I 
>>> realized that some of the documentation referencing the limitations are not 
>>> correct and up to date.
>>>
>>> I'm more than happy to update the header file to reflect the current 
>>> state of the implementation, but first,  I'd like to ask couple of 
>>> questions to understand the implementation better. 
>>>
>>> - Is V8 Fast API considered unstable?
>>> - Since V8 fast api can now allocate, trigger JS and GC, which 
>>> limitations still apply? Looking at line 24, I believe these comments are 
>>> not valid.
>>> - What is the heuristics of CFunction overloads? In an example where a 
>>> function has a required and an optional parameter, is it sufficient to add 
>>> 2 functions,  method(a) and method(a, b)? What is the behavior if the user 
>>> calls this method with 3 arguments? Would it trigger method(a,b)? Is the 
>>> order MemorySpan CFunctions make a difference? Since v8::Local<Value> is 
>>> supported, it seems we can get away with a CFunction that has a second 
>>> parameter of v8::Local<Value> for the optional parameter.
>>> - Since v8 fast api supports v8::Local<v8::Value> now, is there any 
>>> particular reason for using FastOneByteString over v8 local value for one 
>>> byte strings?
>>> - By looking at the documentation, the only limitations I could think of 
>>> are the ones related to the return type of CFunction, which doesn't allow 
>>> returning objects/values/strings. What are the actual limitations of V8 
>>> fast api?
>>>
>>> Thank you for your help.
>>>
>>> -- 
>>> -- 
>>> v8-dev mailing list
>>> v8-...@googlegroups.com
>>> http://groups.google.com/group/v8-dev
>>> --- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "v8-dev" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to v8-dev+un...@googlegroups.com.
>>> To view this discussion visit 
>>> https://groups.google.com/d/msgid/v8-dev/08d9e03f-9db2-47c9-98ce-72c464c72475n%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/v8-dev/08d9e03f-9db2-47c9-98ce-72c464c72475n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>
>>
>> -- 
>>
>> Andreas Haas
>>
>> Software Engineer
>>
>> ah...@google.com
>>
>>
>> Google Germany GmbH
>>
>> Erika-Mann-Straße 33
>>
>> 80636 München
>>
>>
>> Geschäftsführer: Paul Manicle, Liana Sebastian
>>
>> Registergericht und -nummer: Hamburg, HRB 86891
>>
>> Sitz der Gesellschaft: Hamburg
>>
>>
>> Diese E-Mail ist vertraulich. Falls Sie diese fälschlicherweise erhalten 
>> haben sollten, leiten Sie diese bitte nicht an jemand anderes weiter, 
>> löschen Sie alle Kopien und Anhänge davon und lassen Sie mich bitte wissen, 
>> dass die E-Mail an die falsche Person gesendet wurde. 
>>
>>     
>>
>> This e-mail is confidential. If you received this communication by 
>> mistake, please don't forward it to anyone else, please erase all copies 
>> and attachments, and please let me know that it has gone to the wrong 
>> person.
>>
>>

-- 
-- 
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev
--- 
You received this message because you are subscribed to the Google Groups 
"v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to v8-dev+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/v8-dev/cd8bcced-8fe8-4e8a-9a99-485b8dfa3eben%40googlegroups.com.

Reply via email to