Commit graph

525 commits

Author SHA1 Message Date
3047d21870
feat(lua): also pass errors in callbacks 2024-09-17 23:27:27 +02:00
27b56cbd03
docs(java): written javadocs, removed unused class 2024-09-17 23:17:09 +02:00
54db029ecc
chore(lua): split down the monofile 2024-09-17 23:00:30 +02:00
864348bef4
fix: dont use color codes in logger 2024-09-17 22:17:47 +02:00
7d53f61f0a
feat(lua): pass logs via callback channel, fix hints 2024-09-17 18:53:52 +02:00
6e63468e48
feat(java): general cleanup and overhaul of glue code 2024-09-17 17:37:22 +02:00
42ae4247ce
feat(lua): reintroduce and_then safely 2024-09-17 14:34:25 +02:00
d87b0923d9
feat(java): poll, stop, activeBuffers, general fixes and improvements 2024-09-17 02:40:18 +02:00
13ef05f8a2
fix(lua): event type field 2024-09-17 02:02:38 +02:00
7df85fb13e
chore: rename Workspace::try_new -> connect
more appropriate: we pass a ton of parameters and a new connection is
established. try_new was too generic
2024-09-16 21:11:42 +02:00
7aff141e78
fix(lua): cursor fields must be tuples too 2024-09-16 19:58:52 +02:00
cd1fc21df7
feat(lua): alternative getters, annotations
also cleaned up features a bit and updated annotations
oh and run CI too once
2024-09-16 18:24:24 +02:00
5cf6c4d4eb
fix(java): errors in send buffer glue, safer error handling 2024-09-16 02:59:43 +02:00
795423de2a
feat(java): callback API
Co-authored-by: alemi <me@alemi.dev>
2024-09-16 00:20:03 +02:00
05fbbe6f9d
feat(java): get_user, active_workspaces 2024-09-15 02:00:04 +02:00
963f2b698c
feat(java): callback API, buffer send
Co-authored-by: alemi <me@alemi.dev>
2024-09-15 01:56:51 +02:00
a59d2c4648
fix: feature name, disable workflow 2024-09-14 18:54:32 +02:00
cschen
c1ed0d45f3 feat(python): add config support to python with a getter/setter approach 2024-09-14 00:17:46 +02:00
5701a0c49e
chore: merge branch 'config' 2024-09-13 22:57:53 +02:00
97c57a81d6
docs: moved around documentation
on building and using

Co-authored-by: zaaarf <me@zaaarf.foo>
2024-09-13 22:56:00 +02:00
ac94fb86fd
chore: rename feature to py for consistency 2024-09-13 22:21:53 +02:00
92d181246e
feat: strict filetree() 2024-09-13 20:02:42 +02:00
c0b8906043
chore: move ffi infos in root mod
because i actually dont want docs.rs to build with ffi flags anymore:
docs get "littered" with napi auto methods and pyo3 stuff, which is
annoying and needless noise when reading the doc. I would much rather
only have relevant stuff, to not make doc consumers hop around guessing
what is relevant and what not
2024-09-13 12:04:27 +02:00
2f68006d07
fix: glue for js and py 2024-09-11 18:07:55 +02:00
422566a145
fix: proto code was mixing different ideas 2024-09-11 17:50:40 +02:00
314b163b05
fix: more verbose error strings 2024-09-11 17:50:05 +02:00
981e7218b5
fix(lua): actually still need userdata
what's up with weird userdata NULL ?? lets actually get serialized but
return userdata so we get best of all worlds. in the future we could
make overloads with multiple args which bypass serialization
2024-09-11 17:49:09 +02:00
6559fcd5f3
feat(java): use config struct for connect 2024-09-11 15:51:07 +02:00
123f11854c
fix(lua): normalize workspace method names
no _buffer
2024-09-11 15:50:05 +02:00
5e95ddde2a
feat(lua): add config, serialize/deserialize args
before we held all structs on the rust side, which probably means faster
passing and smaller objects but also very inconvenient because must be
constructed on the rust side. all api structs are now serialized back
and forth, which should become fast enough if jitted, allows for simpler
and smaller code and all around probably is a negligible overhead since
we were creating lua function tables and functions every time anyway.
could actually be faster to just serialize simple primitives rather than
creating a function to get it? idk lua api changed too btw
2024-09-11 15:46:05 +02:00
e91a504588
feat: add serialize feature for api structs 2024-09-11 15:45:35 +02:00
d57fb2c4b6
feat: added codemp config, changed connect methods 2024-09-11 15:12:31 +02:00
ba566439d3
docs: add favicon 2024-09-11 15:04:34 +02:00
65721f3e6a
feat(lua): allow loading with many more names
codemp, libcodemp, codemp_native, codemp_lua all work now
2024-09-10 12:29:11 +02:00
e05e273ee2
fix(lua): use patched crate by us, add features
basically upstream lua pushed a change making `send` and `module`
features incompatible, which is not ok for us as we need the LuaFunction
to be sync to send it on the channel. Also added features for all lua
versions, it's a bit messy on the Cargo.toml but now we support really
all lua versions and can probably publish on luarocks
2024-09-10 12:12:59 +02:00
f6ee2f0806
fix(java): borked glue methods 2024-09-09 16:06:05 +02:00
cschen
f2a2892674 fix(python): fix macros also for client.rs 2024-09-08 11:25:33 +02:00
cschen
f116f27b39 fix(python): remove the macro_export and use pub(crate) instead so that it doesn't leak into the documentations. 2024-09-08 11:03:10 +02:00
b968945a37
chore: codemp.dev -> code.mp 2024-09-07 22:10:47 +02:00
cschen
c1c9902b45 feat(python): switched to abi3 mode to allow multiple python versions with single wheel.
abi3 does not support `PyFunction` so added workaround checking for `is_callable()`
2024-09-06 00:24:37 +02:00
fb5bb51e65
fix: uuid was copy, string is not 2024-09-06 00:12:31 +02:00
917a6b96c2
feat: automatically map cursor uuids to names
not a fan of passing an Arc<DashMap> down to the cursor worker, but it
needs to access a mapping managed by the workspace so not sure if it can
be better. Into and From protocol types and Cursor are gone: do things
manually (since user is now a different thing, it can't be auto). Also
api::Cursor got changed: user field is Option<String> now
2024-09-05 23:59:05 +02:00
04e021f964
feat: don't use async-trait for api::Controller
make it still available via feature `async-trait` if it is necessary to
use auto traits downstream, however documentation should now be more
readable
2024-09-05 23:27:57 +02:00
b8376a5ef8
fix: moved import, exclude dist from packaging 2024-09-05 03:28:46 +02:00
1fac27ebd5
fix(lua): use last published beta rather than git 2024-09-05 03:18:06 +02:00
2b47f2a1d6
docs: add docs.rs logo 2024-09-05 03:06:36 +02:00
cd8b0c64f4
chore(java): new error system 2024-09-05 02:45:33 +02:00
921a8ee69a
fix: updated js and py glues with new errors 2024-09-05 02:33:35 +02:00
d25e744a37
docs: improved cargo docs, rewrote readme
Co-authored-by: alemi <me@alemi.dev>
2024-09-05 01:45:48 +02:00
bfe84c45e0
docs: re-documented remaining members 2024-09-04 21:37:35 +02:00
f0a6a6b730
docs: remade docstricts, refactored a bit
refactor shouldn't impact external apis and mostly just moves stuff
around to make sense documentation-wise

Co-authored-by: zaaarf <me@zaaarf.foo>
2024-09-04 20:03:34 +02:00
75a8a3bc92
fix: re-export 2024-09-04 17:22:52 +02:00
e822fad74e
chore: renamed and fixed errors
Co-authored-by: zaaarf <me@zaaarf.foo>
2024-09-04 17:20:59 +02:00
8296b473bb
feat(lua): introduce callbacks channel
this means that lua must poll but at least they run on main thread and
dont segfault the main process
2024-09-01 03:13:03 +02:00
e50703fc77
chore(lua): module at the bottom 2024-09-01 03:11:43 +02:00
89dbc89225
feat(lua): allow printing tracing on stderr
for detached sessions
2024-09-01 03:10:40 +02:00
840da7bf5a
fix(lua): new errors 2024-09-01 03:09:35 +02:00
cf1e910dcb
feat: reworked cursor worker/controller
now its more similar to buffer controller/worker and it behaves more
like an actor/service
2024-09-01 03:08:43 +02:00
b98be22a8b
feat: more capillar errors
so its clear that some functions wont return a transport error or an rpc
error
2024-09-01 02:46:03 +02:00
cschen
0b1a542ed5 fix: we clip the change span in from 0 to the buffer length, this avoids that
badly formatted changes will crash the worker.
Previously I was able to crash the worker by sending oob changes.
chore: improved text change docs a lil bit
2024-09-02 11:31:36 +02:00
cschen
d0d57f6fd5 fix: whops, (I don't know why this bug is still here) 2024-09-01 15:49:54 +02:00
cschen
487a490887 fix(python): changed entry point. separated logger from driver. 2024-08-31 15:23:38 +02:00
cfab8ee148
fix(js): default url 2024-08-27 23:09:36 +02:00
6b7324d37f
feat: added new methods to java, js and py glues 2024-08-27 23:04:56 +02:00
e1da62f0c8
feat(lua): type annotations 2024-08-27 21:24:05 +02:00
30f692e6e1
feat(lua): new session methods 2024-08-27 21:24:05 +02:00
fea7cfcbe1
feat: added session, reworked auth 2024-08-27 21:24:04 +02:00
4a701818f2 feat(js): new glue hash function 2024-08-27 16:09:44 +02:00
fc9247c5a8 chore(js): updated callback functions names 2024-08-27 16:08:25 +02:00
6ea5a72b0c feat(js): Changed callbacks method to return Controller instead of Change 2024-08-24 17:46:05 +02:00
cschen
076128e1db chore(python): added name to buffer controller, small cleanup 2024-08-23 20:41:07 +02:00
cschen
88f4ace04a Merge remote-tracking branch 'origin/dev' into dev 2024-08-22 16:55:28 +02:00
cschen
0c9ea08d64 wip(python): try_recv doesn't return a promise. 2024-08-22 16:52:29 +02:00
cschen
472c33f734 feat(python): added callback support, reaching feature parity with the lib. 2024-08-22 15:22:51 +02:00
21f1948f04
fix(java): new filetree, mistake in create_buffer 2024-08-21 23:41:22 +02:00
cschen
4004f2011f Merge branch 'pyo3_bump' into dev 2024-08-21 18:21:48 +02:00
cschen
76f8058186 chore(python): final cleanup before merge into dev 2024-08-21 18:15:19 +02:00
ed3673b92a feat: buffer get name fn 2024-08-21 17:38:33 +02:00
cschen
dc7ae20b7d fix(python): release GIL when spawning stuff, we don't need to keep it and we risk
deadlocking
feat(python): added allow_thread in the macro
2024-08-21 17:20:12 +02:00
f29ea23c4e feat: new fn for controllers 2024-08-21 17:14:19 +02:00
cschen
fe2f2a3ae0 chore(python): cleaned up the leftovers 2024-08-21 15:45:24 +02:00
cschen
c0e090fe7a Merge branch 'dev' into pyo3_bump 2024-08-21 15:05:17 +02:00
cschen
e7272753e6 Merge branch 'dev' into pyo3_bump 2024-08-21 15:03:10 +02:00
cschen
a4eb58cd4b wip(python): moving the rest of the glue to promises (empty promises) 2024-08-21 15:02:44 +02:00
a99eee170d
feat: allow filtering workspace filetree 2024-08-21 14:57:07 +02:00
cschen
4a575c587f feat(python): fixed macro and expanded to workplace methods 2024-08-20 22:18:29 +02:00
cschen
feff54bcdf feat(python): switched to a "Promise" approach
chore(python): removed, commented out some of the earlier attempts
feat(python): reworked the logger and tokio runtime approach, now the logging
callback drives the runtime.
2024-08-20 21:09:10 +02:00
cschen
72896d87d6 feat(python): tentative of Promise based approach 2024-08-20 17:16:36 +02:00
cschen
b09c7a2206 ON_HOLD: pyo3 experimental async is still too experimental, pivoting to blocking behaviour for now. 2024-08-20 11:22:45 +02:00
3b45c4ddb6
feat(java): UUID-based users, fixed event api 2024-08-19 11:36:51 +02:00
cschen
a45db74722 feat(python): use a current_thread executor 2024-08-18 19:06:07 +02:00
cschen
76e5320e6a chore(python): minor changes 2024-08-17 23:48:02 +02:00
cschen
f743fbcb03 feat: brought back the manual workspace implementation 2024-08-17 23:47:06 +02:00
cschen
07f656cbe5 feat(python): finish wrapping the new glue in the new pyo3 stuff 2024-08-17 01:13:07 +02:00
cschen
3fe6d224e3 feat(python): summon black magic to allow possible release of the GIL between .awaits
plus nice static runtime singleton fetcher/instantiator
2024-08-17 01:12:35 +02:00
cschen
5acca5ce3e feat: make the automatic User translation into py,
fix: properly create the module with the new version signature
2024-08-17 01:11:11 +02:00
cschen
f8c36be6ea feat: updated workspace manually anyway even if commented so that we have it ready just in case 2024-08-17 01:09:29 +02:00
0154e5a032
fix: try_recv() channel error : delta may be None
basically if there was no change to report, the oneshot would not get
updated which is bad. so we put back the version we got and send a None
(the channel now has nullable TextChange). so basically its always a
try_recv, but its fine since recv is implemented with try_recv + poll
anyway
2024-08-17 00:17:01 +02:00
fdcfc611b1
feat(lua): hand rolled a_sync! to the rescue 2024-08-17 00:06:57 +02:00
cschen
ef2285d0f3 Merge branch 'dev' into pyo3_bump 2024-08-16 16:50:55 +02:00
cschen
e7fa9f4a5b fix: Worker list_users_returns a Vec<User> instead of Vec<Identity>
chore: formatter going to town
2024-08-16 16:46:32 +02:00
cschen
9d5aae461f feat: added the file name changed to the workspace event (uniform non-unit variant enum) 2024-08-16 16:15:48 +02:00
cschen
610576f8b7 feat: Bumping to pyo3 0.22, removing pyo3-asyncio, moving code around to allow for
smoother pyo3 aggregation.
2024-08-16 12:58:43 +02:00
0d3af40eb0
feat(java): expose hash function, use OptionalLong in TextChange 2024-08-16 01:21:21 +02:00
8b704fa668
feat: impl so no longer needed from::
Co-authored-by: zaaarf <me@zaaarf.foo>
2024-08-15 22:48:03 +02:00
79f132236f
feat(lua): impl all methods, add callback
this uses mlua beta but whatev api is so much better
2024-08-15 22:19:08 +02:00
a8ce56bcc0
feat: callback gets the controller itself as arg 2024-08-15 20:41:53 +02:00
c0d586df90
feat: Clone+Debug on api::Event 2024-08-15 20:15:37 +02:00
d3ce714070
feat: rather than +Debug, make a newtype 2024-08-15 20:15:23 +02:00
7900ca08a7
feat: added back .callback() to controller api 2024-08-15 19:32:01 +02:00
2f955ecef4
chore: pub(crate) for cursor controller too 2024-08-15 19:31:34 +02:00
cschen
e732e6a938 feat(python): adapted glue to latest changes, still todo workspace events. 2024-08-15 17:58:02 +02:00
b51e55570f
fix(lua): return error with context
maybe wasteful? but i really want this to show error strings
2024-08-15 03:45:50 +02:00
f1b8d83bac
fix: don't clone at the end of select_buffer 2024-08-15 03:42:48 +02:00
889f745dd4
feat(lua): .event(), userdata for WorkspaceEvent 2024-08-15 03:42:25 +02:00
3e37d4ffe3
fix: don't send anything if change is a noop 2024-08-14 23:53:51 +02:00
e43105b919
fix: textchange can be both delete and insert 2024-08-14 23:46:16 +02:00
a5502d1f1f
fix(java): use ext::hash() instead 2024-08-14 19:17:25 +02:00
39f69cc418
feat(java): xxh3 hash checking 2024-08-14 19:09:48 +02:00
fcd2b9f1c9
chore(java): async send 2024-08-14 18:51:34 +02:00
24f5bdf2a7
feat(lua): expose hash field in text change 2024-08-14 18:07:26 +02:00
2d20887509 chore: removed prelude imports and fixed glue exports 2024-08-14 18:00:12 +02:00
b46914528a chore: updated js glue to have async send/recv 2024-08-14 17:25:23 +02:00
8806941a13
feat(lua): expose hash fn 2024-08-14 17:16:58 +02:00
cschen
c58d1db58b fix: proper translation from dt::Operation to Textchange
Co-authored-by: alemi <me@alemi.dev>
2024-08-14 17:16:05 +02:00
97b7504098
feat: hash is a public ext 2024-08-14 17:12:36 +02:00
cschen
d22446ee10 fix: this time is the good one 2024-08-14 16:31:28 +02:00
cschen
6c30699acc Revert "(to alemi: always has been) fix: try now lmao."
This reverts commit 1b5b9e74bf.
2024-08-14 16:15:42 +02:00
cschen
1b5b9e74bf (to alemi: always has been) fix: try now lmao. 2024-08-14 16:07:19 +02:00
2916848165
fix(lua): its all async now 2024-08-14 15:56:36 +02:00
4bed9d7432
fix: cursor controller backpressure
Co-authored-by: cschen <cschen@codemp.dev>
2024-08-14 15:56:10 +02:00
413247f9b4
fix: update local version on send
also keep a branch on which we merge editor's changes, which kind of
solves our race condition thing

Co-authored-by: cschen <cschen@codemp.dev>
2024-08-14 15:55:18 +02:00
3346f1c526
feat: Controller::send is now async
needed because we want this to be acked, no longer a "fire and forget"
action

Co-authored-by: cschen <cschen@codemp.dev>
2024-08-14 15:55:06 +02:00
cschen
ef9da1740a chore: explaining an extra thing 2024-08-14 13:34:01 +02:00
cschen
4d65b2db7d fix: error in the worker that merged more operations than needed. 2024-08-14 13:32:18 +02:00
bd6423856b
chore(java): try_recv async 2024-08-14 00:27:26 +02:00
a9d713fd75
feat: async try_recv, delta_request
Co-authored-by: alemi <me@alemi.dev>
2024-08-14 00:24:32 +02:00
ada6ed49c1
fix(java): async content(), moved select_buffer 2024-08-13 21:58:40 +02:00
ab9c6530cd
fix: better try_recv mutex logic for cursor ctrl 2024-08-13 18:05:46 +02:00
2a016a6619
fix: add .content() back
except now its async and can fail and basically requests the worker to
generate the content for us on demand

Co-authored-by: zaaarf <me@zaaarf.foo>
Co-authored-by: cschen <cschen@codemp.dev>
2024-08-13 18:03:20 +02:00
8874f31eeb
fix: add from error for oneshot channel
this is getting a bit overused...

Co-authored-by: zaaarf <me@zaaarf.foo>
Co-authored-by: cschen <cschen@codemp.dev>
2024-08-13 18:00:17 +02:00
cschen
9acb7b6007 wip: Some attempts at getting DT to work with buffer controller and buffer worker!
This attempt doesn't use a ref to the crdt! But uses an extra channel!
2024-08-13 00:36:09 +02:00
781a130c62
chore: moved tools into ext 2024-08-10 16:13:16 +02:00
9c6036da56
chore: export CodempEvent 2024-08-10 16:12:28 +02:00
6bf541028d
feat(java): replace all expect/unwrap with throwing JNIException 2024-08-10 02:45:20 +02:00
53503ae117
feat(java): glue for workspace events 2024-08-09 14:11:13 +02:00
cschen
264dd319d3 fix(python): fixed the type hints, adapted glue to latest workspace, uniformed names in the glue
chore: forgot a file
2024-08-09 09:14:35 +02:00
29ffba3309
chore: remove unused deps and imports 2024-08-09 00:49:31 +02:00
61be0009ba
fix: removed InternallyMutable::wait
its broken in weird ways, just dont use it that way
2024-08-09 00:40:46 +02:00
a8b4eab445
feat: api struct for event
Co-authored-by: zaaarf <me@zaaarf.foo>
2024-08-09 00:40:33 +02:00