Skip to content

Conversation

@JuliaRegistrator
Copy link
Contributor

# Breaking changes

- Instances of `TclObj` no longer have a type parameter as the *type* of a Tcl object reflects a cached internal state that may change for efficiency.

- `Tcl.getvalue(obj)` has been replaced by `convert(T, obj)` to get a value of given type `T` from Tcl object `obj`.

- List-specialized methods (`llength`, `lappend!`, and `lindex`) have been suppressed in favor of the Julia API for collections. Thus, `length`, `append!`, `push!`, `delete!`, `getindex`, and `setindex!` shall be used to access Tcl objects as if they are lists.

- `Tcl.getinterp()` has been replaced by `TclInterp()`.

- `Tcl.setresult` has been replaced by `Tcl.setresult!`.

- Tcl/Tk options `-key val` in scripts or commands are produced by `key => val` pairs in Julia code where `key` is a string, a symbol, or a Tcl object. Previously it was done for keywords in function calls but, then, `key` cannot be a reserved Julia keyword.

# Fixed

- Raw pointers in C calls are protected by having their owner object preserved from being garbage collected.

- Getting a single char from a Tcl object works for multi-byte sequences.

- To protect the content of shared objects, Tcl imposes a strict copy-on-write policy. Not following this policy causes Tcl to panic (i.e., abort the program). To avoid this, attempts to modify a shared Tcl object are detected and forbidden by throwing an exception.

# Changed

- By default, the package uses artifacts `Tcl_jll` and `Tk_jll`. To use other libraries, one can set the environment variables `ENV["JL_TLIBTCL"]` and `ENV["JL_TLIBTK"]` to the absolute paths of these libraries before calling `pkg> update Tcl` and `pkg> build Tcl`.

- `Tcl.doevents` has been deprecated and replaced by `Tcl.do_events` which returns the number of processed events.

- Following Tcl behavior, `obj[i]` yields `missing` if index `i` is out of range.

## Added

- `Tcl.do_one_event(flags)` to process any pending events matching `flags`.

- `TclInterp` constructor can yield the shared interpreted for the thread of the caller or a new private interpreter.

- `Tcl.quote_string(str)` yields a proper double-quoted string that can be inserted directly in Tcl scripts.

- A Tcl variable may be unset (or deleted) by meany different means (at the user convenience). For example: `Tcl.unset(interp, name)`, `Base.delete!(interp, name)`, or `interp[name] = unset` (where `unset` is the singleton provided by the `UnsetIndex` package and exported by the `Tcl` package).

UUID: 0c1a82aa-b54c-42d3-8054-cbad0e6b9f76
Repo: https://github.com/emmt/Tcl.jl.git
Tree: 0c63fc5011ab660c877842c331b3d42da566aff9

Registrator tree SHA: 50f504d641745716a5b3eabaf681d3a4937d2ae3
@github-actions
Copy link
Contributor

Hello, I am an automated registration bot. I help manage the registration process by checking your registration against a set of AutoMerge guidelines. If all these guidelines are met, this pull request will be merged automatically, completing your registration. It is strongly recommended to follow the guidelines, since otherwise the pull request needs to be manually reviewed and merged by a human.

1. New package registration

Please make sure that you have read the package naming guidelines.

2. AutoMerge Guidelines which are not met ❌

  • Name is not at least 5 characters long
  • Package name similar to 5 existing packages.
    1. Similar to TCX. Damerau-Levenshtein distance 2 is at or below cutoff of 2. Damerau-Levenshtein distance 1 between lowercased names is at or below cutoff of 1.
    2. Similar to Tau. Damerau-Levenshtein distance 2 is at or below cutoff of 2.
    3. Similar to Tk. Damerau-Levenshtein distance 2 is at or below cutoff of 2.
    4. Similar to Tar. Damerau-Levenshtein distance 2 is at or below cutoff of 2.
    5. Similar to Try. Damerau-Levenshtein distance 2 is at or below cutoff of 2.

3. Needs action: here's what to do next

  1. Please try to update your package to conform to these guidelines. The General registry's README has an FAQ that can help figure out how to do so.
  2. After you have fixed the AutoMerge issues, simply retrigger Registrator, the same way you did in the initial registration. This will automatically update this pull request. You do not need to change the version number in your Project.toml file (unless the AutoMerge issue is that you skipped a version number).

If you need help fixing the AutoMerge issues, or want your pull request to be manually merged instead, please post a comment explaining what you need help with or why you would like this pull request to be manually merged. Then, send a message to the #pkg-registration channel in the public Julia Slack for better visibility.

4. To pause or stop registration

If you want to prevent this pull request from being auto-merged, simply leave a comment. If you want to post a comment without blocking auto-merging, you must include the text [noblock] in your comment.

Tip: You can edit blocking comments to add [noblock] in order to unblock auto-merging.

@ViralBShah
Copy link
Contributor

Package name is ok and I can override that. But we probably want to close this PR anyways, and fix a few things before opening a new one.

@emmt Is that ok?

@JuliaTagBot JuliaTagBot added the AutoMerge: last run blocked by comment PR blocked by one or more comments lacking the string [noblock]. label Feb 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AutoMerge: last run blocked by comment PR blocked by one or more comments lacking the string [noblock]. new package

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants